2012-05-14 27 views
25

Mã sau đây là cách tôi đang cố gắng xác định xem tệp có tồn tại trong bộ nhớ trong không, MODE_PRIVATE.Cố gắng kiểm tra xem tệp có tồn tại trong bộ nhớ trong

public boolean isset(String filename){ 
    FileInputStream fos = null; 
    try { 
     fos = openFileInput(filename); 
     //fos = openFileInput(getFilesDir()+"/"+filename); 
     if (fos != null) { 
     return true; 
     }else{ 
     return false; 
     } 
    } catch (FileNotFoundException e) { 
     return false; 
    } 

    //File file=new File(mContext.getFilesDir(),filename); 

    //boolean exists = fos.exists(); 
    } 

Tuy nhiên, nó đi vào ngoại lệ và không tiếp tục với mã. Nó không làm sự trở lại. Tại sao?

+1

Bạn có thể cung cấp cho chúng với stack trace? – Nicholas

Trả lời

101

hy vọng phương pháp này sẽ giúp bạn.

public boolean fileExist(String fname){ 
    File file = getBaseContext().getFileStreamPath(fname); 
    return file.exists(); 
} 
+3

Câu trả lời đúng, Michael Petrotta bạn nên chấp nhận điều này – Amanni

+1

@bsara Tại sao bối cảnh cơ bản thay vì bối cảnh của ứng dụng, hoặc cả hai hoạt động? –

+0

getApplicationContext() cũng hoạt động –

4

Đối với lưu trữ nội bộ, điều này làm việc cho tôi:

public boolean isFilePresent(String fileName) { 
    String path = getContext().getFilesDir().getAbsolutePath() + "/" + fileName; 
    File file = new File(path); 
    return file.exists(); 
} 
Các vấn đề liên quan