2017-05-13 3 views
-1

ファイル名に特定の文字列を含むファイルを検索し、そのファイルの行(txtのもの)を返すarraylistに格納するメソッドがあります。ファイルのメソッドを削除すると動作しない

ファイルの最後に削除しますが、機能しません。私はFile.delete()を試した/私はGoogleで見つけたすべてのもの、パスクラスを介して削除。

これはメソッドです:

public ArrayList<String> receiveAvailableDish() { 

    ArrayList<String> dishStats = new ArrayList<>(); 
    File dir = new File("clientApplication"); 
    File[] directoryListing = dir.listFiles(); 
    if (directoryListing != null) { 
     for (File child : directoryListing) { 
      if (child.getName().contains("newDish.txt")) { 
       BufferedReader reader = null; 
       try { 
        reader = new BufferedReader(new FileReader(child)); 

       } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } 
       String line; 
       try { 
        while ((line = reader.readLine()) != null) { 
         dishStats.add(line); 

        } 


       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 

      child.delete(); // TRYING TO DELETE ?! 
     } 
    } 
    return dishStats; 
} 

私もそれがファイルを見つけて、ArrayListの作品にそのラインを入れていることを意味して配列リストはインデックスに値を持っていることに言及したいと思います。 BufferedReaderはまだそれを開いているとして、事前に

おかげで

+0

「私が試した... Pathクラスによって削除」あなたの質問を編集して、そのコードをご提示ください。確かにあなたはその方法でファイルを削除しようとしたときに有益な例外を受け取りました。 – VGR

答えて

0

あなたのファイルが削除されることはありません。

使用後は、Java 7 try-with-resourcesを使用してリソースを閉じるか、通常は閉じてください。

例:

try (BufferedReader reader = new BufferedReader(new FileReader(child))) { 
    while ((line = reader.readLine()) != null) { 
     dishStats.add(line); 
    } 
} catch (IOException e) { 
    e.printStackTrace(); 
} finally { 
    try { child.delete() } catch (IOException ioe) {}; 
} 
関連する問題