2016-08-04 41 views
0

我試圖從Android上的特定文件夾讀取特定文件,然後將其讀入SQLite數據庫。當我從資產文件夾中抓取它時,讀入數據庫工作正常(但是這對於最終版本不起作用,因爲文件將在時間上改變)。但是,我遇到了文件沒有找到實際訪問文件的問題。Android選擇特定的文件位置

在設備上,該文件的路徑顯示爲「/ storage/emulated/0/Wellpro」,文件名爲「orfice.txt」。

目前我的代碼來訪問該文件從大約3或4個不同的來源扔在一起,因爲我沒有找到任何具體的東西。

 String fileName = "/storage/emulated/0/Wellpro/orfice.txt"; 
     String path = Environment.getExternalStorageDirectory()+fileName; 
     InputStream is = new FileInputStream(path); 
     BufferedReader buffer = new BufferedReader(new InputStreamReader(is, "UTF-8")); 

任何幫助將不勝感激。

感謝。

回答

1

getAbsolutePath()給你SD卡的完整路徑。

嘗試

String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath(); 
String fileName = "myFile.txt"; 

// check if file path exist then read the file 
File f = new File(baseDir + File.Separator + fileName); 
FileInputStream fiStream = new FileInputStream(f); 
+0

該文件沒有坐在SD卡的路徑中。它坐在一個文件夾中。 此外,我不知道這是否會改變的事情,但它不是在SD卡persay。它位於內部存儲器上,但任何應用程序均可訪問該存儲器。雖然,據我所知,它被視爲外部存儲無論如何。 – Mitchell

+0

我沒有完全得到你。如果它能幫助你理解,那就很開心 – Kathi

+0

該文件坐在名爲「Wellpro」的文件夾中。所以,我需要首先進入該文件夾哪個去SD卡路徑不會我不會想到? – Mitchell

0

你的第一個錯誤是,文件名應該是 「orfice.txt」 因爲Environment.getExternalStorageDirectory()爲您提供了路徑。按照@ Kathi的解決方案,這是很好的。

如果您仍然遇到問題,請確保您添加了訪問外部存儲所需的適當權限。如果您是一個API < 23個發展中,添加到Android清單以下權限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

如果您是API = 23個發展中,應要求在運行時的權限。請查詢https://developer.android.com/training/permissions/requesting.html瞭解更多關於如何操作的信息。

+0

好吧,我會將「/ storage/emulated/0/Wellpro /」放入getExternalStorageDirectory,比如getExternalStorageDirectory(「/ storage/emulated/0/Wellpro /」)?? – Mitchell

+0

不,你應該使用 File file = new File(Environment.getExternalStorageDirectory()。getAbsolutePath()+「/Wellpro/orfice.txt」); 注:外部存儲器是您的板載閃存的一部分。 –

+0

最好在沒有getAbsolutePath()的情況下使用Environment.getExtrenalStorageDirectory() –