【问题标题】:Android files in intenal storage and local directory内部存储和本地目录中的 Android 文件
【发布时间】:2011-04-07 18:32:18
【问题描述】:

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

【问题讨论】:

    标签: android


    【解决方案1】:

    getDir 返回一个 File 对象。要操作目录和文件结构,请继续使用 File 对象。例如

    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 将遵循相同的准则。

    【讨论】:

      【解决方案2】:

      重点是openFileInput()openFileOutput() 直接使用该目录中的文件,因此它们不需要绝对路径名。

      编辑:更准确地说,它们使用 getFilesDir() 返回的目录中的文件,而不是 getDir() 通常是包根目录。

      如果要创建相对于getDir() 的自定义目录,则需要使用openFileInput()openFileOutput() 以外的类/方法(例如使用InputStreamOutputStream 和相关的文件“reader”/“writer”类)。

      【讨论】:

      • 嗯,所以如果我的应用程序空间中有 x.txt 和 dummy/x.txt android 会做什么呢?
      • @arinte:“应用空间”是什么意思?
      • 应用程序本地存储,但您已经回答了我的问题。在我看来,这是 API 中的一个漏洞。为什么有创建目录的便捷方法,而其他便捷方法不支持。
      • @arinte:我认为,一般来说,并不认为“正式”目录结构是必要的,而且几乎大多数“工作”文件都可以位于应用程序的“/files”目录中.这将它们放在一个私人存储空间中,如果卸载应用程序,该空间将被清理。我认为它适用于大多数人,但如果你想要一个更复杂的结构,你需要期望使用更复杂的方法。我可以看到它的 +/- 方面,但这基本上是我们必须使用的。
      • @MisterSquonk getDir() 实际上并没有为我返回应用程序的 /files 目录,至少没有使用 MODE_PRIVATE。不知道为什么。现在我收到抱怨说 Titanium Backup 没有备份我的应用程序的数据,因为它似乎只做 /files 文件夹?叹息……
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2012-06-08
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      • 2012-04-01
      • 1970-01-01
      相关资源
      最近更新 更多