为什么我的资产文件没有更新?

我的程序从assets文件夹打开一个.txt文件并从中读取。 这里是代码:

AssetManager myAssetManager = myContext.getAssets(); try{ InputStream is = myAssetManager.open("databaseeleven.txt"); byte[] bytes = new byte[is.available()]; is.read(bytes); commands = new String(bytes); } catch(IOException e){ Toast.makeText(myContext, e.getMessage(), Toast.LENGTH_SHORT).show(); e.printStackTrace(); }//try-catch 

我注意到,当我对名为databaseeleven.txt的文件进行更改并保存文件时,当我再次运行我的程序时,我的更改不会反映在模拟器上。 该项目被保存到一个拇指驱动器。 我检查了一下,以确保只有一个文件具有该名称,并且是最新的。 我知道应用程序是由于代码更改而重新下载的。 我使用egit,Eclipse版本3.6.2和ADT版本10.0.1。 有谁知道为什么我的程序没有处理这个保存的文件?

更新:刷新,然后再次清理项目没有帮助。

如果我已经正确理解你的问题,你正试图改变/assets文件夹中的文件。 在签署软件包后更改.apk内容是不可能的。

如果文件很小,请将其复制到app's private data directory

如果文件较大,请将其复制到/sdcard

这是发生在我的资产文件夹中的.sqlite文件,我解决了它

  1. 从手机上卸载应用程序
  2. 和重build。

什么是databaseeleven.txt的文件大小?

资产文件每个文件的限制为1MB,如果文件大小超过了这个限制,它将不会在您的apk中可用。

如果这是你的情况,我知道有两种select:

  • 把你的文件分成1MB块,你在这个SO问题中有一个例子
  • 使用不会被Android压缩的文件扩展名,如此处所示 。 请注意,你的文件不会被压缩,你可能会得到一个大的apk。

注意:似乎在Android 2.3中删除了1MB的限制,所以这只适用于2.2和更低。

编辑文件后清理项目….希望这有助于

嗨在Eclipse中刷新项目后清理并重新构build它。 希望您能够find模拟器中反映的更改

如果它是你的格式的txt文件,你应该做这样的事情

 InputStream ins = getResources().openRawResource(R.raw.options); 

其中“options”是〜/ res / raw文件夹中的options.txt文件。

对这个文件的任何改变仍然需要发布/部署回到设备/模拟器,所以它有最新的apk。

希望这可以帮助…