0

バッファライターはファイルに書き込んでいません。誰かが問題になる可能性があるものを教えてもらえますか

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Writer;


public class main {
    /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {

        Writer output = null;
        File file = new File("D:/junk/CI_CSSOIDs sql_query/orphans.log");
        output = new BufferedWriter(new FileWriter(file));

        java.io.FileReader fr = new FileReader( "D:/junk/CI_CSSOIDs ql_query/SQL_CSSO.log" ) ;
        java.io.BufferedReader reader = new BufferedReader( fr ) ;
        int orphancount=0;
        String line = null ;
        int count =1;
        while( ( line = reader.readLine() ) != null )
        {         
            String words[]=line.split(" ");
            for (int i =0;i<words.length;i++){
                if (words[i].length()==32){
                    String CIline=null;
                    java.io.FileReader CIfr = new FileReader( "D:/junk/CI_CSSOIDs sql_query/CI.log" ) ;
                    java.io.BufferedReader CIreader = new BufferedReader( CIfr ) ;
                    boolean orphan = true;
                    while((CIline=CIreader.readLine())!=null){
                        if (CIline.contains(words[i])){
                            orphan=false;
                            break;
                            }                       
                    }
                    if(orphan){
                        orphancount++;
                        output.write("####"+words[i]+"*****\n");
                        System.out.println(words[i]+" : is an orphan CSSOID");
                    }                   
                }
            }       
            count++;        
        }
        System.out.println("Orphan count is :"+orphancount);
    }
}
4

4 に答える 4

3

データを書き込んだ後、BufferedWriter を試してみてくださいflush()close()

于 2011-07-18T19:40:44.343 に答える
2

BufferedWriter書き終わったら閉じてください。

output.close();
于 2011-07-18T19:40:00.053 に答える
2

ライターを flush() も close() もしません。これはバッファリングされたライターであるため、いずれかを実行するまで、すべてのものはバッファに保存されます。

于 2011-07-18T19:40:59.357 に答える
2

ABufferedWriterバッファ書き込み。つまり、バッファが使い果たされるか、ライターをフラッシュ/閉じるまで、データがメモリに保持されます。これは、パフォーマンスを向上させるために行われます。

すべてのストリーム/リーダー/ライターを閉じることをお勧めします。これで問題も解決します。

于 2011-07-18T19:38:50.880 に答える