android 檔案管理方法
android使用的是基于linux的檔案系統,對于檔案的通路和管理是通過權限設定來限制的.
在linux系統中,檔案權限分别描述了建立者、同組使用者和其他使用者對檔案的操作限制。
x表示可執行,r表示可讀,w表示可寫,d表示目錄,-表示普通檔案。
産生這樣的檔案權限與程式人員設定的
android 存儲檔案的類型
(内部存儲)程式開發人員可以建立和通路程式自身的私有檔案;
(資源存儲)可以通路儲存在資源目錄中的原始檔案和xml檔案;
(外部存儲)可以在sd卡等外部儲存設備中儲存檔案
android系統允許應用程式建立僅能夠自身通路的私有檔案,檔案儲存在裝置的内部存儲器上,在linux系統下的/data/data/<package name>/files目錄中
android系統不僅支援标準java的io類和方法,還提供了能夠簡化讀寫流式檔案過程的函數
fileoutputstream openfileoutput(string filename int mode)
fileinputstream openfileinput(string filename)
參數檔案不允許包含描述路徑的斜杠(其存儲位置固定)
通路模式:
mode_private 私有模式,缺陷模式,檔案僅能夠被檔案建立程式通路,或具有相同uid的程式通路。
mode_append 追加模式,如果檔案已經存在,則在檔案的結尾處添加新資料。
mode_world_readable 全局讀模式,允許任何程式讀取私有檔案。
mode_world_writeable 全局寫模式,允許任何程式寫入私有檔案。
三個基本的讀方法
abstract int read() :讀取一個位元組資料,并傳回讀到的資料,如果傳回-1,表示讀到了輸入流的末尾。
int read(byte[] b) :将資料讀入一個位元組數組,同時傳回實際讀取的位元組數。如果傳回-1,表示讀到了輸入流的末尾。
int read(byte[] b, int off, int len) :将資料讀入一個位元組數組,同時傳回實際讀取的位元組數。如果傳回-1,表示讀到了輸入流的末尾。off指定在數組b中存放資料的起始偏移位置;len指定讀取的最大位元組數。
其它方法
long skip(long n) :在輸入流中跳過n個位元組,并傳回實際跳過的位元組數。
int available() :傳回在不發生阻塞的情況下,可讀取的位元組數。
void close() :關閉輸入流,釋放和這個流相關的系統資源。
void mark(int readlimit) :在輸入流的目前位置放置一個标記,如果讀取的位元組數多于readlimit設定的值,則流忽略這個标記。
void reset() :傳回到上一個标記。
boolean marksupported() :測試目前流是否支援mark和reset方法。如果支援,傳回true,否則傳回false。
三個基本的寫方法
abstract void write(int b) :往輸出流中寫入一個位元組。
void write(byte[] b) :往輸出流中寫入數組b中的所有位元組。
void write(byte[] b, int off, int len) :往輸出流中寫入數組b中從偏移量off開始的len個位元組的資料。
void flush() :重新整理輸出流,強制緩沖區中的輸出位元組被寫出。
void close() :關閉輸出流,釋放和這個流相關的系統資源。
對檔案和流的操作容易引發異常,是以必須要用try-catch語句
主要核心代碼
首先是建立一個檔案
private final string file_name = "myfile01.txt";
寫檔案
fileoutputstream fos = null;//聲明一個全局變量
//注意下面的語句要進行抛異常處理filenotfoundexception e,ioexception e
fos = openfileoutput(file_name,context.mode_private);//寫流式檔案過程的
函數,這裡的權限是私有的
string text = entrytext.gettext().tostring();//把輸入的内容轉化為字元串
fos.write(text.getbytes());//把轉化為字元串的内容轉化為位元組,然後寫入
//下面語句寫在finally裡面
fos.flush();//把緩存裡的内容寫入到檔案
fos.close();//關閉流
讀檔案
讀檔案的第二種方法