2011-05-11 81 views
0

我在我的android应用程序中使用一个非常复杂的方法(不是我写的),它接受一个字符串参数“路径”,然后打开并解析该路径中的文件。 问题是这样的:当我设置路径到我的SD卡上的文件(如下所示:Environment.getExternalStorageDirectory()+“/ myfile.txt”)它工作正常。 但我不希望我的文件可用于用户,所以我试图设置路径到我的项目中的资产文件夹,我复制该文件,并使用此路径它将无法正常工作。在我的资产文件夹中的文件浪费了这个:file:///android_asset/myfile.txt 那么为什么第一个路径工作正常,第二个什么也没做?我的文件的安装路径

感谢

+0

///从 “中” 向 “去”

路径发送作为参数的 “非常复杂的方法” 复制方法你有没有权限(和权限)编辑你正在使用的“非常复杂的方法”的代码? – TofferJ

回答

1

你必须使用AssetManager访问的资产文件夹中的文件。

+0

为了说明问题,这是因为应用程序项目中的资产文件夹是.apk存档的驻留文件,并且在安装应用程序时不是设备或模拟器上的单独文件夹,因此您无法使用普通文件访问该文件夹访问功能。 – RivieraKid

+0

感谢RivieraKid。说得通 – user347187

0

所以我做的是这样的:我写了一个方法,将文件从资产复制到我的应用程序的数据目录,然后将此路径发送到“非常复杂的方法”。 现在它工作正常。 代码示例(也许这将有助于在未来的人):

///从资产文件夹中打开文件

的InputStream在= getAssets()打开( “myfile.txt的”);

///创建输出和位置给它

///您可以设置任何路径你喜欢

(新文件( “数据/数据/ myAppPackageName /数据库/”))。 mkdirs(); OutputStream out = new FileOutputStream(“data/data/myAppPackageName/databases/myfile.txt”); “数据/数据/ myAppPackageName /数据库/ myfile.txt的”