将文本文件写入SDCard会在Android中产生IllegalArgumentException

时间:2011-07-15 05:01:17

标签: android file android-sdk-2.1

  

可能重复:
  Android write to sd card folder

使用此代码编写文件:

public void writeFile(String data){
try { // catches IOException below
final String TESTSTRING = new String(data+"-");


String path=Environment.getExternalStorageDirectory().getAbsolutePath()
    + "/test.txt";
FileOutputStream fOut = openFileOutput(path,
                                        MODE_WORLD_READABLE);
OutputStreamWriter osw = new OutputStreamWriter(fOut); 

// Write the string to the file
osw.write(TESTSTRING);
/* ensure that everything is
 * really written out and close */
osw.flush();
osw.close();

}catch (Exception e) {
    e.printStackTrace();
}
}

以上代码生成的错误:

java.lang.IllegalArgumentException: File /sdcard/test.txt contains a path separator  

我找不到这段代码的错误。

3 个答案:

答案 0 :(得分:2)

此链接可能对您有所帮助。

Android write to sd card folder

您必须在文件名之前删除'/'。 openFileOuput()获取要打开的文件的名称;它不能包含路径分隔符。

另外,您是否已获得在清单文件中写入外部存储的权限?

答案 1 :(得分:1)

openFileOutput用于为应用程序创建私有文件,这些文件将保存在应用程序的私有目录中。这意味着您需要向方法发送文件名而不是整个路径。

并确保您在AndroidManifest.xml中拥有WRITE_EXTERNAL_STORAGE权限。

答案 2 :(得分:0)

openFileOuput()不接受路径,只接受文件名。