我想在内部文件夹中保存文件,但收到此错误:
错误:文件包含路径分隔符
这是我的代码:
try {
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput("storage/emulated/0/test2/test2.txt", Context.MODE_APPEND));
outputStreamWriter.append(data);
outputStreamWriter.close();
}
答案 0 :(得分:8)
首先,openFileOutput()
只接受文件名,而不是完整路径。将the documentation的第一个参数引用到openFileOutput()
:“要打开的文件的名称;不能包含路径分隔符。”。
其次,openFileOutput()
适用于internal storage上的文件。根据您的路径,您似乎正在尝试使用external storage。您无法使用openFileOutput()
。
第三,从不硬编码路径。数以亿计的Android设备的路径是错误的。始终使用Android提供的方法派生要使用的目录。
第四,不要用新目录弄乱外部存储的根。这相当于将所有程序的文件放在Windows上的C:
驱动器的根目录中。
第五,写入外部存储根目录中的某个位置意味着用户必须授予您在外部存储上的任何位置进行写入的权限(通过WRITE_EXTERNAL_STORAGE
权限),这也会增加应用程序的复杂性(由runtime permissions on Android 6.0+)。
因此,例如,您可以用:
替换第一行OutputStreamWriter outputStreamWriter =
new OutputStreamWriter(new FileOutputStream(new File(getExternalFilesDir(null), "test2.txt")));
这为您提供了一个外部存储位置(getExternalFilesDir()
),该位置对您的应用而言是唯一的,并且在Android 4.4 +上不需要任何特殊权限。