目录& Android文件系统上的文件创建

时间:2012-08-27 17:57:50

标签: java android io filesystems

我正在尝试创建目录层次结构,然后将资产中的文件复制到新创建的目录中。我已经在stackoverflow上使用了这里提供的代码示例,但我没有得到任何结果。基本上我的代码是这样的:

InputStream in = getAssets.open(mydb.sqlite);
File dir = new File("/data/data/my.package/databases/");

dir.mkdirs();
out = new FileOutputStream("/data/data/my.package/databases/mydb.sqlite");
while ((len = in.read(buffer)) > 0)
{
    out.write(buffer, 0, len);
}
out.flush();
out.close();
in.close

这一切都是在首次发布的主要活动中完成的,当然应该只进行一次。在代码运行之前,唯一存在的目录是/ data /。是的,它是一个数据库文件,但此时无关紧要,因为我只是复制文件而尚未尝试使用数据库代码访问它。

代码不会抛出任何异常,dir.mkdirs()返回true。无论如何,都不会创建目录并且不会复制文件。我已经将WRITE_EXTERNAL_STORAGE的权限行添加到我的清单中,正如在几个地方建议的那样,FWIW。我可以单步执行代码,一切似乎都很好。但当然不是。

我需要在这里寻找什么?文件权限问题?为什么代码认为一切都在那里(即,当它到达复制代码时,它不会抛出FileNotFoundException)但实际上文件系统上什么都没有?

编辑:这就是我所学到的。 getDir()在/data/data/my.package/app_*中创建目录。不确定为什么它在目录名称上使用此前缀。如果您需要将某些内容放在标准位置(例如数据库/或文件/。

),这将无效

1 个答案:

答案 0 :(得分:1)

使用openFileOutput代替/ data / data是内部存储,您应该只使用Android API来获取文件句柄。请参阅:http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

编辑: /data/data/my.package由openFileOutput / getDir处理,因此您可以使用getDir('databases',MODE_PRIVATE)创建目录并在那里创建文件。

EDIT2: 来自getDir文档:

  

您可以使用返回的File对象来创建和访问此目录中的文件。