内部存储和本地目录中的Android文件
Android为您提供了getDir(我假设这意味着我将拥有myappspace/somedirectory)来在您的应用程序空间中创建一个目录。但是,如果在openFileOutput/Input调用中有路径分隔符,那么当android给您一个错误时,您如何读取或写入该目录中的文件?它给您一个错误?关键是内部存储和本地目录中的Android文件,android,Android,Android为您提供了getDir(我假设这意味着我将拥有myappspace/somedirectory)来在您的应用程序空间中创建一个目录。但是,如果在openFileOutput/Input调用中有路径分隔符,那么当android给您一个错误时,您如何读取或写入该目录中的文件?它给您一个错误?关键是openFileInput()和openFileOutput()直接处理该目录中的文件,这样它们就不需要绝对路径名 编辑:更准确地说,它们处理getfiledir()返回的目录中的文件,而不是
openFileInput()
和openFileOutput()
直接处理该目录中的文件,这样它们就不需要绝对路径名
编辑:更准确地说,它们处理getfiledir()
返回的目录中的文件,而不是getDir()
通常是包根目录
如果要创建相对于
getDir()
的自定义目录,则需要使用除openFileInput()
和openFileOutput()
之外的类/方法(例如使用InputStream和OutputStream以及相关的文件“reader”/“writer”类)。File dir = getDir("myDir", Context.MODE_PRIVATE);
File myFile = new File(dir, "myFile");
openFileOutput只是基于一些文本条件返回FileOutputStream。我们所要做的就是创建对象
FileOutputStream out = new FileOutputStream(myFile);
从这里开始,你会像往常一样继续
String hello = "hello world";
out.write(hello.getBytes());
out.close();
FileInputStream将遵循相同的指导原则。Huh,因此,如果我的应用程序空间中有x.txt和dummy/x.txt,那么android将做什么?@Arnite:你所说的“应用程序空间”是什么意思?应用程序本地存储,但你已经基本回答了我的问题。在我看来,这是API中的一个漏洞。为什么有方便的方法来创建目录,但在其他方便的方法中不支持它。@Arint:我认为,一般来说,并不认为“正式”目录结构是必要的,大多数“工作”文件都可以位于应用程序的“/files”目录中。这会将它们保存在一个私人存储空间中,如果应用程序未安装,该存储空间将被清理。我认为它适用于大多数人,但如果你想要一个更复杂的结构,你需要期望使用更复杂的方法。我可以看到+/-的一面,但这基本上是我们必须要处理的。@MisterSquonk getDir()不会为我返回应用程序的/files目录,事实上,至少在MODE_PRIVATE中不会。不知道为什么。现在我收到了一些投诉,说Tianium Backup没有备份我应用程序的数据,因为它似乎只备份/files文件夹?叹息。。。