2012-11-23 71 views
1

我使用下面的代碼來檢查文件的文件夾中存在的SD卡:如何檢查是否有文件的丟失

//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();      
    } 

此代碼工作得很好。

現在我已經存儲在sdcard/my_folder/不同的子文件夾5個已知文件:

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 

的問題是,我要檢查是否存在的所有文件,然後做一些事情。如果上述任何文件不可用或丟失,則顯示Toast消息。

我不知道如何顯示Toast消息只是一次,如果任何文件不存在(手動這樣做會顯示Toast消息,每當文件不可用,這不是我的願望)。

你可以給點幫忙嗎?非常感謝。

回答

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();      
} 
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 =真它是確定。

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 
}