您的位置:首页 > 移动开发 > Android开发

Android 异常处理:java.lang.IllegalArgumentException(...contains a path separator)

2012-03-10 22:33 615 查看
对以下错误:

java.lang.RuntimeException: java.lang.IllegalArgumentException: File /data/data/com.alex.datasave/files/user.txt contains a path separator

原先代码:

fis = this.context.openFileInput("/data/data/com.alex.datasave/files/user.txt");

正确代码:

File file = new File("/data/data/com.alex.datasave/files/user.txt");

fis = new FileInputStream(file);

注意:

1.FileInputStream 与 openFileInput

补充知识:


public abstract FileOutputStream openFileOutput (String name,
int mode)

Since: API Level 1

Open a private file associated with this Context's application package for writing. Creates the file if it doesn't already exist.


Parameters

nameThe name of the file to open; can not contain path separators.
modeOperating mode. Use 0 or
MODE_PRIVATE
for the default
operation,
MODE_APPEND
to append to an existing file,
MODE_WORLD_READABLE
and
MODE_WORLD_WRITEABLE
to
control permissions.

Returns


FileOutputStream Resulting output stream.

如果要打开存放在/data/data/<package name>/files目录应用私有的文件,可以使用Activity提供openFileInput()方法。

FileInputStream inStream = this.getContext().openFileInput("user.txt");

Log.i("FileTest", readInStream(inStream));

readInStream()的方法请看本页下面备注。

或者直接使用文件的绝对路径:

File file = new File("/data/data/com.alex.datasave/files/user.txt");

FileInputStream inStream = new FileInputStream(file);

Log.i("FileTest", readInStream(inStream));

注意:上面文件路径中的“com.alex.datasave”为应用所在包,当你在编写代码时应替换为你自己应用使用的包。

对于私有文件只能被创建该文件的应用访问,如果希望文件能被其他应用读和写,可以在创建文件时,指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐