代码之家  ›  专栏  ›  技术社区  ›  Davide Vosti

在android子目录中写入文件

  •  0
  • Davide Vosti  · 技术社区  · 15 年前

    我试图在android 1.5的子目录中保存一个文件。 我可以使用

    _context.GetFileStreamPath("foo").mkdir();
    

    (_context是我开始执行保存文件的活动),但是如果我试图在foo/by中创建文件

    _context.GetFileStreamPath("foo/bar.txt");
    

    我得到一个异常,说我不能在文件名(“/”)中使用目录分隔符。

    我错过了在安卓系统中处理文件的一些东西…我认为我可以使用标准的Java类,但它们似乎不起作用。 我搜索了android文档,但我无法找到好的例子,google也帮不了我……

    我(向谷歌)问错了问题…

    你能帮我解决这个问题吗?

    谢谢您!

    3 回复  |  直到 8 年前
        1
  •  3
  •   Davide Vosti    15 年前

    我明白我错过了什么。 Java文件类工作正常,只需通过绝对路径即可真正写入文件。

    为了得到这个“根”目录,我使用了@context.getfilesdir()。这将为您提供应用程序的根目录。有了这个我可以用 new File(root + "myFileName") 或者正如肖恩·欧文所说 new File(rootDirectory, "myFileName") .

        2
  •  3
  •   Marv    8 年前

    不能直接使用path,但必须对每个目录创建一个file对象。 我不明白为什么,但这就是它的工作方式。

    注意:此代码生成目录,您可能不需要…

    File file = context.getFilesDir();
    file.mkdir();
    
    String[] array = filePath.split("/");
    for (int t = 0; t < array.length - 1; t++) {
        file = new File(file, array[t]);
        file.mkdir();
    }
    
    File f = new File(file, array[array.length - 1]);
    
    RandomAccessFileOutputStream rvalue = new RandomAccessFileOutputStream(f, append);
    
        3
  •  2
  •   Sean Owen    15 年前

    使用 getDir() 获取“foo”目录的句柄 File 对象,并创建类似于 new File(fooDir, "bar.txt") 从它。