2012-06-13 112 views
0

我試圖訪問XML這種解析文件:當它運行時,我收到以下錯誤獲得FileNotFoundException異常甚至認爲該文件是有

InputStream inputStream = context.getAssets().open("/mnt/sdcard/cat/bird/flowers.xml"); 

06-13 23:13:22.620: W/System.err(3118): java.io.FileNotFoundException: /mnt/sdcard/cat/bird/flowers.xml 
06-13 23:13:22.620: W/System.err(3118):  at android.content.res.AssetManager.openAsset(Native Method) 
06-13 23:13:22.620: W/System.err(3118):  at android.content.res.AssetManager.open(AssetManager.java:314) 
06-13 23:13:22.620: W/System.err(3118):  at android.content.res.AssetManager.open(AssetManager.java:288) 

我已籤該文件的拼寫,我已經檢查了幾次位置。該文件在那裏並正確命名。這裏發生了什麼?

謝謝

+0

如果你投了票,爲什麼不留下你爲什麼downvoted解釋。這樣海報可以改善他們的問題。看不出你爲什麼會低估的任何原因。 – prolink007

回答

5

getAssets().open(...)用於通過將它們放置在項目的/assets目錄訪問您已打包帶.apk文件的文件。

試圖打開一個文件,這個路徑...

/mnt/sdcard/cat/bird/flowers.xml 

...意味着AssetManager會嘗試尋找您最初放在項目具有以下路徑的打包文件...

/assets/mnt/sdcard/cat/bird/flowers.xml 
+0

我改變它搜索一個正常的文件,而不是在資產中。現在它可以工作。謝謝 – prolink007

3

請確保您有以下權限。 (可能不需要閱讀)。在某些設備上,從SD卡讀取也受到限制。

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

也不要使用硬編碼路徑,使用以下獲取外部存儲路徑。

String path = Environment.getExternalStorageDirectory() + "/cat/bird/flowers.xml"; 
+0

我有權限,路徑沒有硬編碼。我只是拿出額外的噪音來告訴你實際使用的是什麼。這樣我可以發佈更少的代碼,但讓我的觀點。 – prolink007

0

getAssets()通常用於訪問項目中assets文件夾中的文件。你應該使用像這樣的東西:

InputStream inputStream = new FileInputStream("//sdcard//cat//bird//flowers.xml"); 
相關問題