Android 異常處理:java.lang.IllegalArgumentException(...contains a path separator)


參考網址: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權限


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM