Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
内部存储和本地目录中的Android文件_Android - Fatal编程技术网

内部存储和本地目录中的Android文件

内部存储和本地目录中的Android文件,android,Android,Android为您提供了getDir(我假设这意味着我将拥有myappspace/somedirectory)来在您的应用程序空间中创建一个目录。但是,如果在openFileOutput/Input调用中有路径分隔符,那么当android给您一个错误时,您如何读取或写入该目录中的文件?它给您一个错误?关键是openFileInput()和openFileOutput()直接处理该目录中的文件,这样它们就不需要绝对路径名 编辑:更准确地说,它们处理getfiledir()返回的目录中的文件,而不是

Android为您提供了getDir(我假设这意味着我将拥有myappspace/somedirectory)来在您的应用程序空间中创建一个目录。但是,如果在openFileOutput/Input调用中有路径分隔符,那么当android给您一个错误时,您如何读取或写入该目录中的文件?它给您一个错误?

关键是
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文件夹?叹息。。。