1

次のコードを使用して、sdcard のフォルダーにファイルが存在するかどうかを確認します。

//Check if database exists
    File fia = new File(Environment.getExternalStorageDirectory()+"/my_folder/db/my_file_1");
    if(fia.exists())
       {                        
         //do something 
       }                        
   else
    {                       
       Toast.makeText(getApplicationContext(), "Database is not available. Please install it.", Toast.LENGTH_LONG).show();                      
    } 

このコードはうまく機能します。

現在、次のような異なるサブフォルダーに5つの既知のファイルが保存されていますsdcard/my_folder/

1. sdcard/my_folder/db/my_file_1 
2. sdcard/my_folder/db/my_file_2
3. sdcard/my_folder/abc/my_file_3
4. sdcard/my_folder/abc/my_file_3
5. sdcard/my_folder/xyz/my_file_5

問題は、すべてのファイルが存在するかどうかを確認してから、何かをしたいということです。上記のファイルのいずれかが利用できないか見つからない場合は、トースト メッセージを表示します。

いずれかのファイルが存在しない場合にトースト メッセージを 1 回だけ表示する方法がわかりません (手動でこれを行うと、ファイルが利用できない場合は常にトースト メッセージが表示されますが、これは私の望みではありません)。

少し手伝ってくれませんか?どうもありがとう。

4

3 に答える 3

2

複数のパスをチェックするメソッドを追加するだけです

private boolean checkFileExists(String path) {
    File file = new File(path);
    return file.exists();
}

private boolean checkAllFilesExist(String[] ... paths) {
    if (paths != null && paths.length > 0) {
        for (String path : paths) {
            if (!checkFileExists(path)) {
                return false;
            }
        }
        return true;    
    } else {
        return false;
    }
}

if (!checkAllFilesExist("/path1", "/path2")) {
    // some of them missed
}
于 2012-11-23T12:45:53.377 に答える
1

ファイル名を文字列配列に入れ、以下のようにループでチェックします

ArrayList<String> arrFiles= new ArrayList<String>();
arrFiles.add(sdcard/my_folder/db/my_file_1 );
arrFiles.add(sdcard/my_folder/db/my_file_2 );
arrFiles.add(sdcard/my_folder/db/my_file_3 );
arrFiles.add(sdcard/my_folder/db/my_file_4 );
Boolean isOk=true;

for(String s : arrFiles){

File fia = new File(Environment.getExternalStorageDirectory()+s);
    if(fia.exists())
       {                        
          // it is ok
       }                        
   else
    {                       
      isOk=false;
    } 

}

それなら isok = true でOKです。

于 2012-11-23T12:42:10.240 に答える
1
File fia = new File(Environment.getExternalStorageDirectory()+"/my_folder/db/my_file_1");
File fia2 = new File(Environment.getExternalStorageDirectory()+"/my_folder/db/my_file_2");
File fia3 = new File(Environment.getExternalStorageDirectory()+"/my_folder/abc/my_file_3");
File fia4 = new File(Environment.getExternalStorageDirectory()+"/my_folder/abc/my_file_3");
File fia5 = new File(Environment.getExternalStorageDirectory()+"/my_folder/xyz/my_file_5");
if(fia.exists() && fia2.exists() && fia3.exists() && fia4.exists() && fia5.exists())
   {                        
     //do something 
   } else {                       
   Toast.makeText(getApplicationContext(), "Database is not available. Please install it.", Toast.LENGTH_LONG).show();                      
} 
于 2012-11-23T12:43:54.357 に答える