參考網址:http://blog.csdn.net/alex_zhuang/article/details/7340901
對以下錯誤:
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
name The name of the file to open; can not contain path separators.
mode Operating mode. Use 0 or MODE_PRIVATE for the default operation, MODE_APPEND to append to an existing file, MODE_WORLD_READABLE andMODE_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權限