2012-07-24 36 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。

感谢菲尔送给我正确的方向。

相关问题