導航:首頁 > 操作系統 > android分段讀取文件

android分段讀取文件

發布時間:2023-09-07 10:55:42

android開發之如何讀寫文件

【轉】

首先介紹如何存儲數據,顯然,要將數據從應用中輸出到文件中,必須得到一個輸出流outPutStream,然後往輸出流中寫入數據,在這里Android自帶了一個得到應用輸出流的方法

FileOutputStream fos =context.openFileOutput(「yuchao.txt」,Context.MODE_PRIVATE); (1)

其中第一個屬性為文件名,第二個屬性為讀寫模式(有關讀寫模式的說明下面將詳細闡述),

然後在文件輸出流fos中便可以寫入數據

Fos.write(「Hi,」I』m Chao Yu!」.getBytes());

用完文件輸出流之後記得關閉

fos.close();

這樣,在/data/data/packageName/file目錄下就生成了一個文件名為yuchao.txt的文件,文件中的內容為」 Hi,I』m Chao Yu!」

有關(1)中讀寫模式其實就是制定創建文件的許可權以及在讀寫的時候的方式,Android中提供了以下幾種讀寫模式

Context.MODE_PRIVATE = 0

該模式下創建的文件其他應用無權訪問,並且本應用將覆蓋原有的內容

Context.MODE_APPEND = 32768

該模式下創建的文件其他應用無權訪問,並且本應用將在原有的內容後面追加內容

Context.MODE_WORLD_READABLE = 1

該模式下創建的文件其他應用有讀的許可權

Context.MODE_WORLD_WRITEABLE = 2

該模式下創建的文件其他應用有寫的許可權

如果需要將文件設置為外部應用可以讀寫,可將讀寫模式設置為Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE

一般情況下,各個應用維護的數據都在一個特定的文件夾中,即上面所提到的/data/data/packageName/file(存在於手機存儲中),但手機內存畢竟有限,所以有些情況下,我們需要往SD卡中寫入數據文件,這其實和普通的java web 應用步驟一樣,都是先創建特針對特定目錄特定文件的輸出流,然後往輸出流中寫數據,這里要注意一個方法,就是獲取SD卡根目錄的方法,隨著Android系統不斷升級,SD卡的根目錄隨時都有可能改變,Android中得到SD卡根目錄的方法是

File sdCardDir = Environment.getExternalStorageDirectory();

然後就可以進行下面的步驟

File saveFile = new File(sdCardDir, 「yuchao.txt」);

FileOutputStream outStream = new FileOutputStream(saveFile);

outStream.write("Hi,I』m ChaoYu".getBytes());

outStream.close();

值得注意的是,在往SD卡中寫數據的時候,健壯的代碼必須考慮SD卡不存在或者防寫的情況,故在寫入之前,先做判斷

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){

……

}

接著,我們來學習下我們的應用程序如何讀取文件中的數據,其實就是寫的逆向過程

若要讀取應用程序默認維護的文件(即/data/data/packageName/file目錄下的文件),首先得到文件輸入流

FileInputStream istream = this.context.openFileInput(「yuchao.txt」);

然後在內存中開辟一段緩沖區

byte[] buffer = new byte[1024];

然後創建一個位元組數組輸出流

ByteArrayOutputStream ostream = new ByteArrayOutputStream();

讀出來的數據首先放入緩沖區,滿了之後再寫到字元輸出流中

while((len=istream.read(buffer))!=-1){

ostream.write(buffer, 0, len);

}

最後關閉輸入流和輸出流

istream.close();

ostream.close();

將得到的內容以字元串的形式返回便得到了文件中的內容了,這里的流操作較多,故以一張圖片來說明,見圖1

return new String(ostream.toByteArray());

從SD卡中讀取數據與上述兩個步驟類似,故不再贅述,留給讀者自己思考

如在開發過程中進行SD卡地讀寫,切忌忘了加入許可權

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

至此,Android系統中有關文件數據的讀寫介紹完畢。

② android一個文本文件如何按行讀取

try{
InputStreammyInput=mcontext.getResources().openRawResource(R.raw.medicalspeciality);
InputStreamReaderreader=newInputStreamReader(myInput);
BufferedReaderbreader=newBufferedReader(reader);
Stringstr;
FileWritermyOutput=newFileWriter(outFileName,true);
while((str=breader.readLine())!=null){
System.out.println(i+++str);
}
//Closethestreams
myOutput.flush();
myOutput.close();
myInput.close();
}catch(Exceptione){
//TODO:handleexception
e.getStackTrace();
}

③ android 如何讀寫文件

讀文件:

1、通過File獲取文件

2、打開輸入流,讀取文件

寫文件:

1、創建文件

2、打開輸出流,寫入文件內容


示例:

讀文件:
Stringcontent="";//文件內容字元串
//通過路徑/sdcard/foo.txt打開文件
Filefile=newFile("/sdcard/foo.txt");
try{
InputStreaminstream=newFileInputStream(file);//讀取輸入流
InputStreamReaderinputreader=newInputStreamReader(instream);//設置流讀取方式
BufferedReaderbuffreader=newBufferedReader(inputreader);
while((line=buffreader.readLine())!=null){
content+=line+" ";//讀取的文件內容
}
}catch(Exceptionex){
}
寫文件:
Filefile=newFile("/sdcard/foo.txt");//
if(!file.exists())
file.createNewFile();//如果文件不存在,創建foo.txt
try{
OutputStreamoutstream=newFileOutputStream(file);//設置輸出流
OutputStreamWriterout=newOutputStreamWriter(outstream);//設置內容輸出方式
out.write("文字內容");//輸出內容到文件中
out.close();
}catch(java.io.IOExceptione){
e.printStackTrace();
}

④ android讀取TXT文件數據

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String fileName = "/sdcard/y.txt";//文件路徑
// 也可以用String fileName = "mnt/sdcard/Y.txt";
String res = "";
try {
FileInputStream fin = new FileInputStream(fileName);
// FileInputStream fin = openFileInput(fileName);
// 用這個就不行了,必須用FileInputStream
int length = fin.available();
byte[] buffer = new byte[length];
fin.read(buffer);
res = EncodingUtils.getString(buffer, "UTF-8");////依Y.txt的編碼類型選擇合適的編碼,如果不調整會亂碼
fin.close();//關閉資源
System.out.println("res--->"+res);
int a=Integer.parseInt(res.substring(3, 5));
int b=Integer.parseInt(res.substring(8, 10));
System.out.println(a+"res--->"+b);//獲取的a.b
} catch (Exception e) {
e.printStackTrace();
}
}

閱讀全文

與android分段讀取文件相關的資料

熱點內容
exe怎麼知道源碼 瀏覽:383
計算機怎麼實現可編程的 瀏覽:494
軒轅傳奇如何查看玩過的伺服器 瀏覽:37
凌陽單片機選型 瀏覽:480
android手機hosts 瀏覽:97
路由器l2tp伺服器地址是什麼 瀏覽:160
做解壓手套視頻 瀏覽:620
退役命令文件 瀏覽:676
linux遞歸查找文件 瀏覽:245
哪個app上才能看到免費的名門摯愛 瀏覽:839
mysql查看錶欄位的命令 瀏覽:523
ios里的文件夾怎麼用 瀏覽:166
壓縮銀行開戶時間表 瀏覽:429
銀行人員如何解壓 瀏覽:829
newfile命令快捷鍵 瀏覽:569
阿里雲物理伺服器 瀏覽:955
靈狐視頻app哪個好 瀏覽:259
大廠退役程序員自述 瀏覽:254
linux命令watch 瀏覽:889
加密幣哪些平台不撤出中國 瀏覽:553