.Context.MODE_WORLD_WRITEABLE模式創建的文件不可以被其他應用讀取,但是可以被其他
應用寫入:
-----------------------
測試代碼:
public void testAccessReadWriteable() throws Throwable{
String TAG="testAccessAppend";
String path="/data/data/com.credream.file/files/writeable.txt";
File file=new File(path);
ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
FileInputStream inputStream=new FileInputStream(file);
byte[] buffer=new byte[1024];
int len=0;
while ((len=inputStream.read(buffer))!=-1){
outputStream.write(buffer,0,len);
}
byte[] data=outputStream.toByteArray();
outputStream.close();
inputStream.close();
String content=new String(data);
Log.i(TAG, content);
}
}
--------------------------------------
選中該方法,然後右鍵運行出現錯誤,提示沒有權限
---------------------------------------------------
2.如果希望文件被其他應用讀和寫,可以傳入:
openFileOutput("itcast.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);//這裡也可以直接寫3,因為前面的變量代表的整型值是1後面的是//2
--------------------------------
FileOutputStream outStream=context.openFileOutput
(filename,Context.MODE_WORLD_WRITEABLE+Context.MODE_WORLD_READABLE);
--------------------------------------------
測試代碼,用於存儲文件
com.credream.service
FileService.java
public void saveRW(String filename, String content) throws Exception
{
//IO j2ee
FileOutputStream outStream=context.openFileOutput
(filename,Context.MODE_WORLD_WRITEABLE+Context.MODE_WORLD_READABLE);
outStream.write(content.getBytes());//content.getBytes()這個方法
調用系統的
outStream.close();
}
-------------------------------------------
調用FileService.java--->saveRW方法,保存文件
/File/src/com/credream/file/readTest.java
public void testRW()throws Exception{
FileService service=new FileService(this.getContext());
service.saveRW("rw.txt","rw");
}
----------------------------------------
測試即可讀又可寫文件:rw.txt是不是可以讀取:
/OherFile/src/com/credream/othertest/AccessOtherPrivateTest.java
public void testAccessRW() throws Throwable{
String TAG="testAccessAppend";
String path="/data/data/com.credream.file/files/rw.txt";
File file=new File(path);
ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
FileInputStream inputStream=new FileInputStream(file);
byte[] buffer=new byte[1024];
int len=0;
while ((len=inputStream.read(buffer))!=-1){
outputStream.write(buffer,0,len);
}
byte[] data=outputStream.toByteArray();
outputStream.close();
inputStream.close();
String content=new String(data);
Log.i(TAG, content);
}
----------------------------------------------------------
測試即可讀又可寫文件:rw.txt是不是可以寫入:
public void testAccessRWriteable() throws Throwable{
String path="/data/data/com.credream.file/files/rw.txt";
File file=new File(path);
FileOutputStream outputStream=new FileOutputStream(file);
outputStream.write("lidewei".getBytes());
outputStream.close();
}
在方法上右鍵Android junit 就可以測試可寫入性了
數據寫入了,但是覆蓋了以前的數據,如果說希望在原來數據的基礎上進行追加,可以這樣
FileOutputStream outputStream=new FileOutputStream(file,true);
true就是以追加模式進行寫入數據 www.2cto.com
--------------------------------------------------
1.其實,Android用的是linux系統,他的安全模式也沿用了linux系統的
所以在用文件浏覽器查看的時候,會有一列:Permissions權限(來表示每個文件的權限:
-rw-r-的格式)
2.
- rw- rw- ---
-代表文件,如果是d代表文件夾
rw-代表可以被這個應用讀寫,-代表不可以運行
rw-同一組的其他應用也可以對他讀寫-
---其他應用不可以對他讀寫;代表不可以運行
--------------------------------------------------
Activity還提供了getCacheDir()和getFilesDir()方法:
getCacheDir()方法用於獲取/data/data/<package name>/cache目錄
getFilesDir()方法用於獲取/data/data/<package name>/files目錄
-------------------------------------------------------------------