Javaファイルの読み書き操作は符号化方式を指定する--文字化けを避ける
ファイルの読み込み:BufferedReader
文字入力ストリームからテキストを読み出し、各文字をバッファリングし、文字、配列、行の効率的な読み取りを提供します.
バッファのサイズを指定するか、デフォルトのサイズを使用できます.ほとんどの場合、デフォルト値は十分です.
通常、Readerが行う各読み出し要求は、ベース文字またはバイトストリームに対して対応する読み出し要求をもたらす.したがって、すべてのread()をBufferedReaderで包装することをお勧めします.これには、FileReaderやInputStreamReaderなどの、非常にコストのかかるReaderが含まれます.たとえば、
BufferedReader in = new BufferedReader(new FileReader("foo.in")); 指定したファイルの入力をバッファリングします.バッファがない場合、read()またはreadLine()が呼び出されるたびに、ファイルからバイトが読み出され、文字に変換されて返されます.これは極めて非効率です.各DataInputStreamを適切なBufferedReaderで置き換えるには、DataInputStreamを使用して、原文で入力するプログラムをローカライズすることができます.
ファイルの符号化方法を指定するために、//BufferedReader in=new BufferedReader(new FileReader(saveFilename);BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(saveFilename),"GB2312"));
書き込みファイル:BufferedWriter BufferedWriter
文字出力ストリームにテキストを書き込み、各文字をバッファリングし、単一の文字、配列、文字列の効率的な書き込みを提供します.
バッファのサイズを指定するか、デフォルトのサイズを受け入れることができます.ほとんどの場合、デフォルト値は十分です.
このクラスはnewLine()メソッドを提供し、プラットフォーム独自の行区切り記号概念を使用し、この概念はシステム属性line.separator定義.すべてのプラットフォームが新しい行記号(')を使用して行を終了するわけではありません.したがって、このメソッドを呼び出して、各出力行を終了するには、新しい行文字を直接書き込むよりも優れています.
通常、Writerは、その出力をベース文字またはバイトストリームに直ちに送信します.プロンプト出力が要求されない限り、BufferedWriterですべてのwrite()操作をパッケージすることを推奨します.FileWritersやOutputStreamWritersなど、コストの高いWriterが使用される可能性があります.たとえば、
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out"))); ファイルへのPrintWriterの出力をバッファします.バッファがない場合、print()メソッドを呼び出すたびに文字をバイトに変換し、すぐにファイルに書き込むのは極めて非効率です.
ファイルの符号化方法を指定するため:PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(saveFilename)、「GB 2312」)
=================================================
ファイルの読み込み:
文字入力ストリームからテキストを読み出し、各文字をバッファリングし、文字、配列、行の効率的な読み取りを提供します.
バッファのサイズを指定するか、デフォルトのサイズを使用できます.ほとんどの場合、デフォルト値は十分です.
通常、Readerが行う各読み出し要求は、ベース文字またはバイトストリームに対して対応する読み出し要求をもたらす.したがって、すべてのread()をBufferedReaderで包装することをお勧めします.これには、FileReaderやInputStreamReaderなどの、非常にコストのかかるReaderが含まれます.たとえば、
BufferedReader in = new BufferedReader(new FileReader("foo.in")); 指定したファイルの入力をバッファリングします.バッファがない場合、read()またはreadLine()が呼び出されるたびに、ファイルからバイトが読み出され、文字に変換されて返されます.これは極めて非効率です.各DataInputStreamを適切なBufferedReaderで置き換えるには、DataInputStreamを使用して、原文で入力するプログラムをローカライズすることができます.
ファイルの符号化方法を指定するために、//BufferedReader in=new BufferedReader(new FileReader(saveFilename);BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(saveFilename),"GB2312"));
書き込みファイル:BufferedWriter BufferedWriter
文字出力ストリームにテキストを書き込み、各文字をバッファリングし、単一の文字、配列、文字列の効率的な書き込みを提供します.
バッファのサイズを指定するか、デフォルトのサイズを受け入れることができます.ほとんどの場合、デフォルト値は十分です.
このクラスはnewLine()メソッドを提供し、プラットフォーム独自の行区切り記号概念を使用し、この概念はシステム属性line.separator定義.すべてのプラットフォームが新しい行記号(')を使用して行を終了するわけではありません.したがって、このメソッドを呼び出して、各出力行を終了するには、新しい行文字を直接書き込むよりも優れています.
通常、Writerは、その出力をベース文字またはバイトストリームに直ちに送信します.プロンプト出力が要求されない限り、BufferedWriterですべてのwrite()操作をパッケージすることを推奨します.FileWritersやOutputStreamWritersなど、コストの高いWriterが使用される可能性があります.たとえば、
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out"))); ファイルへのPrintWriterの出力をバッファします.バッファがない場合、print()メソッドを呼び出すたびに文字をバイトに変換し、すぐにファイルに書き込むのは極めて非効率です.
ファイルの符号化方法を指定するため:PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(saveFilename)、「GB 2312」)
=================================================
ファイルの読み込み:
/**
*
*
* @param filePathAndName
* String c:\\1.txt
* @return boolean
*/
public static String readFile(String filePathAndName) {
String fileContent = "";
try {
File f = new File(filePathAndName);
if(f.isFile()&&f.exists()){
InputStreamReader read = new InputStreamReader(new FileInputStream(f),"UTF-8");
BufferedReader reader=new BufferedReader(read);
String line;
while ((line = reader.readLine()) != null) {
fileContent += line;
}
read.close();
}
} catch (Exception e) {
System.out.println(" ");
e.printStackTrace();
}
return fileContent;
}
書き込みファイル:/**
*
*
* @param filePathAndName
* String c:\\1.txt
*/
public static void writeFile(String filePathAndName, String fileContent) {
try {
File f = new File(filePathAndName);
if (!f.exists()) {
f.createNewFile();
}
OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(f),"UTF-8");
BufferedWriter writer=new BufferedWriter(write);
Writer.write(fileContent);
Writer.close();
} catch (Exception e) {
System.out.println(" ");
e.printStackTrace();
}
}