2012-04-22 12 views
3

私は、ファイルを読み込み、渡された文字列がtempという名前の新しいファイルを作成するという方法を持っているプロジェクトに取り組んでいます。元のものを削除し、tempの名前を元の名前に変更します)。エラーなく実行できますが、新しいファイルには何も出力されません。私は通常デバッグを行い、エラーが行に新しいファイルに書き込む行にあることを発見しました。私は何か間違ったことを言った小さな誤りを作ったように感じる。それは素晴らしいことだ解くすべてのヘルプは...ここJavaのファイルを読み込み、行を削除するとエラーが発生する

はあなたがout(BufferedReaderの)に近い呼び出す必要がありますコード

public static void LineDelete(String Filename, String Content) throws IOException { 
    try { 
     File flights = new File("AppData/" + Filename); 
     File temp; 
     temp = new File("AppData/temp.txt"); 
     FileWriter fstream; 
     BufferedWriter out; 
     try (Scanner sc = new Scanner(flights)) { 

      fstream = new FileWriter("AppData/temp.txt", true); 
      out = new BufferedWriter(fstream); 
      boolean exis = temp.exists(); 
      if (exis) { 
       temp.delete(); 
       temp = new File("AppData/temp.txt"); 
       boolean createNewFile = temp.createNewFile(); 
      } else { 
       boolean creatNewFile = temp.createNewFile(); 
      } 
      String f; 
      while (sc.hasNextLine()) { 
       f = sc.nextLine(); 
       if (!f.equals(Content)) { 

        out.newLine(); 
        out.write(f); 

       } 

      } 
     } 
     fstream.close(); 
     //out.close(); 
     flights.delete(); 
     File flightsn = new File("AppData/" + Filename); 
     temp.renameTo(flightsn); 
    } catch (FileNotFoundException ex) { 
     Logger.getLogger(FileWrite.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

}

答えて

4

です。

try-catch-finallyのfinally節でも閉じてください。

あなたのコードは、これは単にファイルflights.txtを削除して、私は他の何かをしないのです多かれ少なかれ

import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.util.Scanner; 
import java.util.logging.Level; 
import java.util.logging.Logger; 

public class FileWrite { 
    public static void LineDelete(String Filename, String Content) 
      throws IOException { 
     BufferedWriter out = null; 
     File flights = new File("AppData/" + Filename); 
     File temp = new File("AppData/temp.txt"); 
     FileWriter fstream = null; 

     try { 
      Scanner sc = new Scanner(flights); 
      fstream = new FileWriter("AppData/temp.txt", true); 
      out = new BufferedWriter(fstream); 
      boolean exis = temp.exists(); 
      if (exis) { 
       temp.delete(); 
       temp = new File("AppData/temp.txt"); 
       boolean createNewFile = temp.createNewFile(); 
      } else { 
       boolean creatNewFile = temp.createNewFile(); 
      } 
      String f; 
      while (sc.hasNextLine()) { 
       f = sc.nextLine(); 
       if (!f.equals(Content)) { 
        out.newLine(); 
        out.write(f); 
       } 

      } 
     } catch (IOException ex) { 
      Logger.getLogger(FileWrite.class.getName()).log(Level.SEVERE, null, ex); 
     } finally { 
      try { 
       out.close(); 
      } catch (Exception e) { 
       Logger.getLogger(FileWrite.class.getName()).log(Level.SEVERE, null, e); 
      } 
     } 

     if(flights.exists()){   
      flights.delete(); 
      File flightsn = new File("AppData/" + Filename); 
      temp.renameTo(flightsn); 
     } 
    } 
} 
+0

[OK]をする必要があり... – Charlie

+0

私は少し問題を把握[OK]を、一つの他の質問、ときに空の行を削除します。空の行をすべて削除する方法はありますか? – Charlie

+0

ここで閉じる前に、削除して名前を変更しています! –

関連する問題