gpt4 book ai didi

android - 如何在 Androids '/data/data/pkg/files' 目录中创建文件层次结构?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:47:44 26 4
gpt4 key购买 nike

我尝试在 Android 的/data/data/pkg/files 目录中创建“foo/bar.txt”。

这似乎是文档中的矛盾:

To write to a file, call Context.openFileOutput() with the name and path.

http://developer.android.com/guide/topics/data/data-storage.html#files

The name of the file to open; can not contain path separators.

http://developer.android.com/reference/android/content/Context.html#openFileOutput(java.lang.String,%20int)

当我打电话时

this.openFileOutput("foo/bar.txt", Context.MODE_PRIVATE);

抛出异常:

java.lang.IllegalArgumentException: File foo/bar.txt contains a path separator

那么如何在子文件夹中创建文件呢?

最佳答案

您确实遇到了文档问题。如果您深入研究 ApplicationContext.java 的源代码,情况也不会好转。在 openFileOutput() 内部:

File f = makeFilename(getFilesDir(), name);

getFilesDir() 总是返回目录“files”。还有 makeFilename()

private File makeFilename(File base, String name) {
if (name.indexOf(File.separatorChar) < 0) {
return new File(base, name);
}
throw new IllegalArgumentException(
"File " + name + " contains a path separator");
}

因此,通过使用 openFileOutput(),您将无法控制包含的目录;它总是在"file"目录中结束。

但是,没有什么能阻止您使用 File 和 FileUtils 在包目录中自己创建文件。这只是意味着您会错过使用 openFileOutput() 给您带来的便利(例如自动设置权限)。

关于android - 如何在 Androids '/data/data/pkg/files' 目录中创建文件层次结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1889188/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com