2013-03-14 128 views
2

我使用FileInputStream對象讀取文件時出現問題。 我想打開的文件存在(我使用相同的應用程序創建了它,並且可以使用設備上的文件管理器查看它)。 是這樣的方法:無法打開FileInputStream

public String readFile(String name) { 
    try { 
     FileInputStream fis; 
     String res = "", read; 
     File tmp = new File(directory, name); 
     fis = new FileInputStream(tmp); 

     InputStreamReader isr = new InputStreamReader(fis); 
     BufferedReader buffered_reader = new BufferedReader(isr); 

     read = buffered_reader.readLine(); 
     while (read != null) { 
      res = res + read; 
      Log.i("AAAAAAAAAAAAAAAAA", "letto"+read); 
      read = buffered_reader.readLine(); 
     } 
     isr.close(); 
     fis.close(); 
     return res; 

    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    Log.i("AAAAAAAAAA", "Letto un cazzo"); 
    return null; 
} 

凡目錄變量聲明爲:

private static File directory; 

存儲應用程序目錄的靜態對象文件。 問題在哪裏?

logcat的說,

打開失敗ENOENT(沒有這樣的文件或目錄)

上排

fis = new FileInputStream(tmp); 
+0

是你的文件名/位置/分機ok? – stinepike 2013-03-14 20:46:23

+0

當然,同一個班級使用相同的變量作爲寫入文件 – giozh 2013-03-14 20:50:27

+0

添加必要權限的功能? – stinepike 2013-03-14 20:54:36

回答

0

打開失敗ENOENT(沒有這樣的文件或目錄)

我的建議是解決它作爲

FileInputStream fis; 
File tmp = new File(directory, name); 
if (tmp.exists() && tmp.isFile()) { 
    fis = new FileInputStream(tmp); 
    InputStreamReader isr = new InputStreamReader(fis); 
    BufferedReader buffered_reader = new BufferedReader(isr); 
    // next lines ... 
} 
else { 
    // error 
} 

所以沒有辦法如何使其發揮作用。您需要傳遞正確的FILE_PATH或者它不起作用。同時檢查你是否有讀寫權限。

+0

在logcat上顯示該路徑爲/ storage/emulated/0/Appname/filename。 我不知道什麼是模擬/ 0/ – giozh 2013-03-14 20:59:26

1
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
+0

仍然不行! – giozh 2013-03-14 21:19:42

0

FileInputStream openFileInput(String nameOfFile)

打開與此上下文的應用程序包進行讀取相關的私人文件。

來自Api。我用過它,沒有問題。