日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 读取文件相关

發(fā)布時間:2025/1/21 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 读取文件相关 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

首先給大家介紹使用文件如何對數(shù)據(jù)進行存儲,Activity提供了openFileOutput()方法可以用于把數(shù)據(jù)輸出到文件中,具體的實現(xiàn)過程與在J2SE環(huán)境中保存數(shù)據(jù)到文件中是一樣的。

public void save()
??? {
??????? try {
??????????? FileOutputStream outStream=this.openFileOutput("a.txt",Context.MODE_WORLD_READABLE);
??????????? outStream.write(text.getText().toString().getBytes());
??????????? outStream.close();
??????????? Toast.makeText(MyActivity.this,"Saved",Toast.LENGTH_LONG).show();
??????? } catch (FileNotFoundException e) {
??????????? return;
??????? }
??????? catch (IOException e){
??????????? return ;
??????? }
??? }

?

openFileOutput()方法的第一參數(shù)用于指定文件名稱,不能包含路徑分隔符“/” ,如果文件不存在,Android 會自動創(chuàng)建它。創(chuàng)建的文件保存在/data/data/<package name>/files目錄,如: /data/data/cn.itcast.action/files/itcast.txt ,通過點擊Eclipse菜單“Window”-“Show View”-“Other”,在對話窗口中展開android文件夾,選擇下面的File Explorer視圖,然后在File Explorer視圖中展開/data/data/<package name>/files目錄就可以看到該文件。
openFileOutput()方法的第二參數(shù)用于指定操作模式,有四種模式,分別為: Context.MODE_PRIVATE??? =? 0
Context.MODE_APPEND??? =? 32768
Context.MODE_WORLD_READABLE =? 1
Context.MODE_WORLD_WRITEABLE =? 2
Context.MODE_PRIVATE:為默認操作模式,代表該文件是私有數(shù)據(jù),只能被應(yīng)用本身訪問,在該模式下,寫入的內(nèi)容會覆蓋原文件的內(nèi)容,如果想把新寫入的內(nèi)容追加到原文件中。可以使用Context.MODE_APPEND
Context.MODE_APPEND:模式會檢查文件是否存在,存在就往文件追加內(nèi)容,否則就創(chuàng)建新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用來控制其他應(yīng)用是否有權(quán)限讀寫該文件。
MODE_WORLD_READABLE:表示當前文件可以被其他應(yīng)用讀取;MODE_WORLD_WRITEABLE:表示當前文件可以被其他應(yīng)用寫入。
如果希望文件被其他應(yīng)用讀和寫,可以傳入:
openFileOutput("itcast.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);

android有一套自己的安全模型,當應(yīng)用程序(.apk)在安裝時系統(tǒng)就會分配給他一個userid,當該應(yīng)用要去訪問其他資源比如文件的時候,就需要userid匹配。默認情況下,任何應(yīng)用創(chuàng)建的文件,sharedpreferences,數(shù)據(jù)庫都應(yīng)該是私有的(位于/data/data/<package name>/files),其他程序無法訪問。除非在創(chuàng)建時指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE ,只有這樣其他程序才能正確訪問。


讀取文件內(nèi)容

?

public void load()
{
??? try {
??????? FileInputStream inStream=this.openFileInput("a.txt");
??????? ByteArrayOutputStream stream=new ByteArrayOutputStream();
??????? byte[] buffer=new byte[1024];
??????? int length=-1;
??????? while((length=inStream.read(buffer))!=-1)?? {
??????????? stream.write(buffer,0,length);
??????? }
??????? stream.close();
??????? inStream.close();
??????? text.setText(stream.toString());
??????? Toast.makeText(MyActivity.this,"Loaded",Toast.LENGTH_LONG).show();
??? } catch (FileNotFoundException e) {
??????? e.printStackTrace();
??? }
??? catch (IOException e){
??????? return ;
??? }
}

?

對于私有文件只能被創(chuàng)建該文件的應(yīng)用訪問,如果希望文件能被其他應(yīng)用讀和寫,可以在創(chuàng)建文件時,指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE權(quán)限。
Activity還提供了getCacheDir()和getFilesDir()方法:
getCacheDir()方法用于獲取/data/data/<package name>/cache目錄
getFilesDir()方法用于獲取/data/data/<package name>/files目錄

??

把文件放入SD卡

?

使用Activity的openFileOutput()方法保存文件,文件是存放在手機空間上,一般手機的存儲空間不是很大,存放些小文件還行,如果要存放像視頻這樣的大文件,是不可行的。對于像視頻這樣的大文件,我們可以把它存放在SDCard。 SDCard是干什么的?你可以把它看作是移動硬盤或U盤。

在模擬器中使用SDCard,你需要先創(chuàng)建一張SDCard卡(當然不是真的SDCard,只是鏡像文件)。創(chuàng)建SDCard可以在Eclipse創(chuàng)建模擬器時隨同創(chuàng)建,也可以使用DOS命令進行創(chuàng)建,如下:

在Dos窗口中進入android SDK安裝路徑的tools目錄,輸入以下命令創(chuàng)建一張容量為2G的SDCard,文件后綴可以隨便取,建議使用.img:

mksdcard 2048M D:\AndroidTool\sdcard.img

在程序中訪問SDCard,你需要申請訪問SDCard的權(quán)限。

在AndroidManifest.xml中加入訪問SDCard的權(quán)限如下:

<!-- 在SDCard中創(chuàng)建與刪除文件權(quán)限 -->

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

<!-- 往SDCard寫入數(shù)據(jù)權(quán)限 -->

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

?

要往SDCard存放文件,程序必須先判斷手機是否裝有SDCard,并且可以進行讀寫。

注意:訪問SDCard必須在AndroidManifest.xml中加入訪問SDCard的權(quán)限

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

???????? File sdCardDir = Environment.getExternalStorageDirectory();//獲取SDCard目錄

???????? File saveFile = new File(sdCardDir, “a.txt”);

?????? FileOutputStream outStream = new FileOutputStream(saveFile);

???????? outStream.write("test".getBytes());

???????? outStream.close();

}

Environment.getExternalStorageState()方法用于獲取SDCard的狀態(tài),如果手機裝有SDCard,并且可以進行讀寫,那么方法返回的狀態(tài)等于Environment.MEDIA_MOUNTED。

Environment.getExternalStorageDirectory()方法用于獲取SDCard的目錄,當然要獲取SDCard的目錄,你也可以這樣寫:

File sdCardDir = new File("/sdcard"); //獲取SDCard目錄

File saveFile = new File(sdCardDir, "itcast.txt");?

//上面兩句代碼可以合成一句: File saveFile = new File("/sdcard/a.txt");

FileOutputStream outStream = new FileOutputStream(saveFile);

outStream.write("test".getBytes());

outStream.close();

?

《完》

?

FileInputStream? openFileInput(String file)
FileOutputStream? openFileOutput(String name, int mode)?//name:文件名, mode:模式?
FileOutputStream fos = this.openFileOutput(FILE_NAME, 0);//0 默認模式,在那里創(chuàng)建的文件只能由調(diào)用應(yīng)用程序(或所有應(yīng)用程序共享相同的用戶名訪問)。
FileOutputStream fos = this.openFileOutput(FILE_NAME, Context.MODE_APPEND);//可以在已有文件中追加內(nèi)容?
FileOutputStream fos = this.openFileOutput(FILE_NAME, Context.MODE_WORLD_READABLE);//允許所有其他應(yīng)用程序有讀權(quán)限創(chuàng)建的文件
FileOutputStream fos = this.openFileOutput(FILE_NAME, Context.MODE_WORLD_WRITEABLE);//允許所有其他應(yīng)用程序具有寫訪問創(chuàng)建的文件。
注:如果調(diào)用FileOutputStream 時指定的文件不存在,Android會自動創(chuàng)建這個文件。

舉例:
public void logPrinft(String file,String log){
??? ?//file:文件名,log:要寫入文件的東西
??? ?byte[] buf = log.getBytes();
??? ?FileOutputStream fos = null;
??try {
???fos = this.openFileOutput(file, Context.MODE_APPEND);
??} catch (FileNotFoundException e1) {
???// TODO Auto-generated catch block
???e1.printStackTrace();
??}
??? ?try {
???fos.write(buf);
???fos.close();
??} catch (IOException e) {
???// TODO Auto-generated catch block
???e.printStackTrace();
??}
??? }
注:該文件會被放置于data/data/your_app_package_name/files下。

相關(guān)文檔:

http://blog.csdn.net/wenlin56/article/details/6074470

http://blog.csdn.net/hudashi/article/details/6921049

http://blog.csdn.net/zuolongsnail/article/details/6559338

http://xuzhenqinandy.iteye.com/blog/706987

http://blog.csdn.net/abin_gha/article/details/6256733

http://blog.csdn.net/cocodehouse/article/details/5974

轉(zhuǎn)載于:https://www.cnblogs.com/qingblog/archive/2012/06/07/2540184.html

總結(jié)

以上是生活随笔為你收集整理的android 读取文件相关的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。