2016-05-16 11 views
1

を削除してください。ディレクトリ内のファイルを承認済みファイルのリストと比較する方法を検討しています。私は、不足しているファイルを表示し、余分なものを削除したいと思います。ディレクトリ内のファイルが見つからない場合は、

私のコード -

String[] approvedFiles = {"AAA.enc","LCQ.enc","MZXA.enc", "BBB.enc"}; 
    File folder = new File("test/"); 
    File[] listOfFiles = folder.listFiles(); 

    for (int i = 0; i < listOfFiles.length; i++) { 
     //if (How to compare here?) 
      System.err.println("File " + approvedFiles[i] + " missing."); 
    } 

私はこれをどのように実現するのでしょうか?

+0

「appro vedFiles'に 'List 'を追加して 'contains()'を使うことができます。 – Kayaman

答えて

0

簡単なアプローチの1つは、承認されたファイル配列と現在のファイル配列をセットに変換してから差し引くことです。

私はまず、実際に持っているファイルの文字列名を実際に対応するFileオブジェクトと関連付けるマップを作成します。 approvedFilesSetからこのマップのキーセットを差し引くと、余分なファイルが生成されます。オリジナルのFileオブジェクトはルックアップから取得できるので、これらのファイルも削除する必要がある場合は、マップが便利です。

+0

余分なファイルをどのように削除していますか? – Abhishek

+0

余分な地図は本当に必要ですか? 'listOfFiles.forEach(file - > {if(!approvedFilesSet.remove(file)){//余分なファイルを削除}});' – Abhishek

+0

ああ...あなたがJava 8を使用していると仮定して、より単純なものを使用できますか?実際には、Java 8のソリューションをもっと簡単に見えるようにする必要があります。 –

0

あなたが比較しているフォルダ内のファイルと、各ファイルに対してループして、それがapprovedFilesリストにあるかどうかを確認します。もし見つからない場合は "見つかったファイル"を印刷し、見つからない場合は "不明なファイル"を出力してください。正常に動作することを確認したら、変更して不明なファイルを削除してください。

0

データapprovedFilesのための構造がSetなり、その後remove操作を使用する。例:ティムの答えからヒントを得

Set<String> approvedFiles = new HashSet<String({"AAA.enc","LCQ.enc","MZXA.enc", "BBB.enc"}); 
File folder = new File("test/"); 
File[] listOfFiles = folder.listFiles(); 
for (File file : listOfFiles) { 
     approvedFiles.remove(listOfFiles[i].getName()); 
} 
for (String missingFile : approvedFiles) { 
    System.out.println("File " + missingFile + " is missing"); 
} 
0

、私はこれがあなたに不足しているファイルを取得し、余分なものを削除すると思います。この回答は、Java 8 foreachループ

を使用しています
String[] approvedFiles = {"AAA.enc","LCQ.enc","MZXA.enc", "BBB.enc"}; 
Set<String> approvedFilesSet = new HashSet<String>(Arrays.asList(approvedFiles)); 
File folder = new File("test/"); 
File[] listOfFiles = folder.listFiles(); 

listOfFiles.forEach(file -> { 
    if (!approvedFilesSet.remove(file)) { 
     // Delete the extra file 
     try { 
      Files.delete(file); 
     } catch(Exception e) { 
      System.err.println("Error deleting file "+ file); 
     } 
    } 
}); 

System.out.println("Missing Files: "+ approvedFilesSet); 
関連する問題