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」)
=================================================
ファイルの読み込み:
/** 
  *        
  * 
  * @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(); 
    } 
}