2016-09-09 2 views
-1

(こんにちは世界レベルのテスター) 私は、ファイルの束を削除するためのテストを投稿し、すべてをきれいにするためにJavaアプリケーションを持っていますが、問題は私がそれを動作させるように見えません。配列に触れ、チュートリアルで示しているものよりやや複雑なものですが、どんな支援も大いに感謝しています。forループを使用して配列を反復処理すると失敗しますか?

String[] fileArray; 
    fileArray = new String[8]; 

    fileArray[0] = "/Downloads/file1.csv"; 
    fileArray[1] = "/Downloads/file2.csv"; 
    fileArray[2] = "/Downloads/file3.csv"; 
    fileArray[3] = "/Downloads/file4.csv"; 
    fileArray[4] = "/Downloads/file5.csv"; 
    fileArray[5] = "/Downloads/file6.csv"; 
    fileArray[6] = "/Downloads/file7.csv"; 
    fileArray[7] = "/Downloads/file8.csv"; 

    String home = System.getProperty("user.home"); 
    File filePath = new File(home+fileArray); 
    System.out.println(filePath); 

    for (String count: fileArray) { 
    if (filePath.exists()) { 
     filePath.delete(); 
     System.out.println("Deleted"); 
    } 
    else 
    { 
     System.out.println("failed"); 
     Assert.fail(); 
    } 
    System.out.println(count); 
    } 
+1

wrapeあなたのコードを試してみて、あなたは –

+2

あなたはfilePathに=新しいファイル(家+ fileArray)をファイル 'どう思いますか得たものは例外またはエラー入れてください。 'はしますか? – ChiefTwoPencils

+0

@Chief私はそれをディレクトリとして使用し、繰り返しのために使うことができると思っていました。私は間違っていました:D – MG97

答えて

1

あなたは、アレイ内のすべての要素の新しいファイルパスをCONCAT、そうfor体内のファイルで作業を配置する必要がありする必要があります。したがって、すべての反復で、変数filePathの配列の次の要素を取得し、この変数を基底パスhome + filePathに連結する必要があります。今、あなたは必要なファイルを見ている、あなたはfileオブジェクトを作成し、それを使用することができます。あなたは、変数countにあなたが反復ファイルの数が表示されますことを期待よう

String[] fileArray; 
fileArray = new String[8]; 

fileArray[0] = "/Downloads/file1.csv"; 
fileArray[1] = "/Downloads/file2.csv"; 
fileArray[2] = "/Downloads/file3.csv"; 
fileArray[3] = "/Downloads/file4.csv"; 
fileArray[4] = "/Downloads/file5.csv"; 
fileArray[5] = "/Downloads/file6.csv"; 
fileArray[6] = "/Downloads/file7.csv"; 
fileArray[7] = "/Downloads/file8.csv"; 

String home = System.getProperty("user.home"); 


for (String filePath: fileArray) { 
    File file = new File(home + filePath); 
    System.out.println(filePath); 
    if (file.exists()) { 
     file.delete(); 
     System.out.println("Deleted"); 
    } else { 
     System.out.println("failed"); 
     Assert.fail(); 
    } 
} 

が見えます。この場合、このように動作しません。このような形式のforは、for (String arrayElement : arrayToWorkWith) - 変数arrayElementのすべての反復で、配列arrayToWorkWithから次の要素を入れることを意味します。繰り返し中に要素数をカウントする必要がある場合は、別の変数を導入してインクリメントしたり、forサイクルの別の形式(for (int i = 0; i < fileArray.length; i++))を使用することができます。

0

はこのようにtryキャッチで

String[] fileArray; 
    fileArray = new String[8]; 

    fileArray[0] = "/Downloads/file1.csv"; 
    fileArray[1] = "/Downloads/file2.csv"; 
    fileArray[2] = "/Downloads/file3.csv"; 
    fileArray[3] = "/Downloads/file4.csv"; 
    fileArray[4] = "/Downloads/file5.csv"; 
    fileArray[5] = "/Downloads/file6.csv"; 
    fileArray[6] = "/Downloads/file7.csv"; 
    fileArray[7] = "/Downloads/file8.csv"; 

    String home = System.getProperty("user.home"); 
    //File filePath = new File(home+fileArray); thats wrong here and will give you a invalid file anyway as you concatenating a string with an object 


    for (String file: fileArray) { 
    File filePath = new File(home+file); //here you need to define the file 
    if (filePath.exists()) { 
     filePath.delete(); 
     System.out.println("Deleted"); 
    } 
    else 
    { 
     System.out.println("failed"); 
     Assert.fail(); 
    } 
    System.out.println(file); 
    } 
+0

'count'変数を削除してもそれを出力するのでコンパイルされません。 – sphinks

+0

@sphinksありがとうございました。変数の名前を変更しました。 –

関連する問題