1

txtファイルに書き込むこのメソッドにファイルパスを渡しています。しかし、このプログラムを実行すると、完全に書き込まれておらず、どこで間違いを犯したのかわかりません。

public void content(String s) {
  try { 
    BufferedReader br=new BufferedReader(new FileReader(s)); 
    try {
      String read=s;
      while((read = br.readLine()) != null) {    
        PrintWriter out = new PrintWriter(new FileWriter("e:\\OP.txt"));
        out.write(read);
        out.close();
      }
    } catch(Exception e) { }    
  } catch(Exception e) { }
}
4

5 に答える 5

7

毎回ループ内で PrintWriter を作成しないでください。

public void content(String s) {
   BufferedReader br=new BufferedReader(new FileReader(s));

   try {
      PrintWriter out=new PrintWriter(new FileWriter("e:\\OP.txt"));
      String read=null;

      while((read=br.readLine())!=null) {
         out.write(read);
      }
   } catch(Exception e) {
      //do something meaningfull}
   } finally {
      out.close();
   }
}

さらに、他の人が述べたように、finally ブロックを追加し、黙って例外をキャッチせず、Java コーディング規約に従います。

于 2013-01-24T15:15:37.187 に答える
1

内部で PrintWriter を閉じ、最後にループの外側をブロックします

 finally {

         out.close();
    }
于 2013-01-24T15:11:41.367 に答える
1

代わりに Apache Commons IO を使用することをお勧めします。

http://commons.apache.org/io/api-release/org/apache/commons/io/IOUtils.htmlでうまくいくはずです。

(低レベルのことを学ぼうとしている場合や、この場合に IOUtils を使用できない理由を実際に知っている場合を除きます。)

于 2013-01-24T15:18:23.577 に答える
0

これを試して

public void content(String s) throws IOException { 
        try (BufferedReader br = new BufferedReader(new FileReader(s));
                PrintWriter pr = new PrintWriter(new File("e:\\OP.txt"))) {
            for (String line; (line = br.readLine()) != null;) {
                pr.println(line);
            }
        }
}
于 2013-01-24T15:18:06.457 に答える
0

終了する前のクロージング ストリーム。だから、それを入れるか

<code>
finally {
out.close();
}
</code>

or see this simple example

<code>try {
    String content = s;
    File file = new File("/filename.txt");

    // if file doesnt exists, then create it
    if (!file.exists()) {
    file.createNewFile();
    }

    FileWriter fw = new FileWriter(file.getAbsoluteFile());
    BufferedWriter bw = new BufferedWriter(fw);
    bw.write(content);
    bw.close();
    System.out.println("Done");
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
</code>
于 2013-01-24T15:28:42.090 に答える