テキストファイルがありますが、テキストファイルを少し変更してから書きますが、 System.out.println
を使用すると結果が異なるのはなぜですか? pwPaperAuthor.println
を使用していますか?文字列トークン化エラーが発生しました
コードは次のようである:
package cn.com.author;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;
//input:"IndexAuthors1997-2010.txt"
//output:"PaperAuthor1997-2010.txt"
public class PaperAuthors {
public static void main(String[] args) {
BufferedReader brIndexAuthors = null;
BufferedWriter bw = null;
PrintWriter pwPaperAuthor = null;
try {
brIndexAuthors = new BufferedReader(new InputStreamReader(
new FileInputStream("IndexAuthors1997-2010.txt")));
bw = new BufferedWriter(new FileWriter(new File(
"PaperAuthor1997-2010.txt")));
pwPaperAuthor = new PrintWriter(new OutputStreamWriter(
new FileOutputStream("PaperAuthor1997-2010.txt")));
/*
* line = brIndexAuthors.readLine();
*
* element=line.split("@"); String author=null; StringTokenizer st =
* new StringTokenizer(element[1],","); while(st.hasMoreTokens()) {
* author = st.nextToken(); pwPaperAuthor.println(element[0] + "+" +
* author); //~i++; }
*/
String line = null;
String element[] = new String[3];
String author = null;
int i = 0;
while ((line = brIndexAuthors.readLine()) != null) {
element = line.split("#@");
StringTokenizer st = new StringTokenizer(element[1], ",");
int num=st.countTokens();
while (st.hasMoreTokens()) {
author = st.nextToken();
pwPaperAuthor.println(element[0]+"@"+author+"@"+element[2]);
bw.write(element[0] + "@" + author + "@" + element[2]);
bw.newLine();
System.out.println(element[0]+"@"+author+"@"+element[2]);
i++;
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
}
}
}
出力リレー
System.out.println(element[0]+"@"+author+"@"+element[2]);------>[email protected] Ern
場合は、ファイルを読み取り、それに書き込むことができる方法はありません
pwPaperAuthor.println(element[0]+"@"+author+"@"+element[2]);
----->[email protected] [email protected]
ストリームクラスと...リーダー/ ...ライタークラスの主な違いは、ストリームが生のバイトを処理し、後者が文字を処理することです。文字を扱うには、特定の "文字エンコーディング"を指定する必要があります。さまざまな形のUnicode(UTF-8、UTF-16など)は、そのようなエンコーディングの1つです。 –