Android學習筆記—文件的操作模式,各種模式之間的關系,以及沿用linux系統的安全性

.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.aiwalls.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目錄

——————————————————————-

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *