2012-07-24 68 views
0

plist文件我想打開一個文件爲我正在創建一個Android應用程序。我測試了在普通的Java項目上打開這個文件的代碼,它打開的很好。但是,當我在Android Java項目中使用此代碼時,出現java.io.FileNotFoundException錯誤。Android FileNotFound異常與將建在

File file = new File ("list.plist"); 

現在list.plist文件是在項目的父目錄。該文件將作爲其將被使用的唯一一個應用程序包含在應用程序中。

我想我習慣了Xcode,我可以將文件放在項目的任何位置,我可以在沒有問題的情況下訪問它。

我該如何構建這條路?

感謝:-)

我用這個,但它也沒有工作。

File file = new File(context.getFilesDir().getAbsoluteFile(), "list.plist");

回答

0

首先,您需要確保您使用的文件打包在您的應用程序中 - 例如assets目錄中。其次,Android會根據擴展名自動壓縮plist文件。作爲一種解決方法,將擴展名更改爲Android不會壓縮的內容。這些擴展包括:

".jpg", ".jpeg", ".png", ".gif", 
".wav", ".mp2", ".mp3", ".ogg", ".aac", 
".mpg", ".mpeg", ".mid", ".midi", ".smf", ".jet", 
".rtttl", ".imy", ".xmf", ".mp4", ".m4a", 
".m4v", ".3gp", ".3gpp", ".3g2", ".3gpp2", 
".amr", ".awb", ".wma", ".wmv" 

(爲完整的文章,看到dealing-with-asset-compression-in-android-apps

+0

如果文件被壓縮,我會有讀取錯誤嗎? – 2012-07-24 03:01:52

+0

從我的經驗來看,是的。另一個可能工作的選項(對於某些資產)使用AssetFileDescriptor讀取,就像[在這裏]完成的一樣(http://stackoverflow.com/questions/8220527/android-reading-a-text-file-from-assets-似乎到包括一批量-OF-垃圾之前) – Phil 2012-07-24 03:06:40

0

你需要把這個文件中的資產目錄,而不是在父文件夾。父文件夾中的任何文件都不需要與應用程序打包在一起。此外,手機上的文件結構與您在eclipse中看到的不一樣。

0

您應該使用「res/raw」或「assets」目錄在您的Android項目中包含原始文件。 請參閱:http://developer.android.com/guide/topics/data/data-storage.html

+0

所以它的getAbsoluteFile()+ /assests/list.plist?由於Assets不支持 – 2012-07-24 03:04:27

+0

,因此Activity#getAssets()會返回AssetManager實例,您可以在其中獲取文件處理程序。或者你可以通過R文件訪問文件,如果你把文件放在res/raw目錄 – 2012-07-24 03:08:41

0

我加入了list.plist到資產的文件夾,並更名爲list.mp3避免壓縮的問題。

AssetManager assetManager = getAssets(); 
InputStream inputStream = assetManager.open("list.mp3"); 

這成功地打開了文件沒有問題,它現在允許我解析inputStream。

感謝菲爾送給我正確的方向。

相關問題