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