0

実行しようとするOUT.TXTと、常に空でした。理由を見つけるのを手伝ってもらえますか?またSPY.LOG、セリフが普通ではありませんが、それらのセリフを修正する方法も手伝ってもらえますか?

package burak;
import java.io.*;

public class Yucal {
    public static void main(String [] args) {

        String fileName = "spy.log";
        String line;
        try {

            FileReader fileReader =  new FileReader(fileName);
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            while((line = bufferedReader.readLine()) != null)
            {
            try{
                  FileWriter fstream = new FileWriter("out.txt");
                  BufferedWriter out = new BufferedWriter(fstream);
                  out.write(line);
                  out.close();
                  }
            catch (Exception e){
                  System.err.println("Error: " + e.getMessage());
                  }
            System.out.printf("%65s\n", line);
            }
            bufferedReader.close();         
        }
        catch(FileNotFoundException ex) {
            System.out.println(
                "Unable to open file '" + 
                fileName + "'");                
        }
        catch(IOException ex) {
            System.out.println("Error reading file '" + fileName + "'");           }
    }
4

3 に答える 3

2

変更はほとんどありません

FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader);
FileWriter fstream = new FileWriter("out.txt");
BufferedWriter out = new BufferedWriter(fstream);
while ((line = bufferedReader.readLine()) != null) {
    try {
        out.write(line);
        out.write("\n");
    } catch (Exception e) {
        System.err.println("Error: " + e.getMessage());
    }
    System.out.printf("%65s\n", line);
}
out.close();
bufferedReader.close();

FileWriter fstream = new FileWriter("out.txt");間違いは、while ループ内で開いたことです。それは外になければなりません。

于 2013-07-16T13:57:14.563 に答える
1
        FileReader fileReader =  new FileReader(fileName);
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        while((line = bufferedReader.readLine()) != null)
        {
        try{
              >FileWriter fstream = new FileWriter("out.txt");**
              >BufferedWriter out = new BufferedWriter(fstream);**

        <snip>

ファイルを開いて1行書くたびに。次に、それを閉じます。次にそれを開くと、ファイルの以前の内容が上書きされます。おそらく、>でマークされた行を while ループの外に移動する必要があります。

ファイルspy.logの最後の行が空である可能性があります。

于 2013-07-16T16:50:20.320 に答える
0

さらに、すべての close ステートメントを finally ブロックに移動します。

これらのストリームを閉じるときに、いくつかの IO 例外を処理する必要がある場合もあります。

お役に立てれば。

于 2013-07-16T14:04:27.350 に答える