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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

android 读取文件相关

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

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

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()方法的第一參數用于指定文件名稱,不能包含路徑分隔符“/” ,如果文件不存在,Android 會自動創建它。創建的文件保存在/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()方法的第二參數用于指定操作模式,有四種模式,分別為: Context.MODE_PRIVATE??? =? 0
Context.MODE_APPEND??? =? 32768
Context.MODE_WORLD_READABLE =? 1
Context.MODE_WORLD_WRITEABLE =? 2
Context.MODE_PRIVATE:為默認操作模式,代表該文件是私有數據,只能被應用本身訪問,在該模式下,寫入的內容會覆蓋原文件的內容,如果想把新寫入的內容追加到原文件中。可以使用Context.MODE_APPEND
Context.MODE_APPEND:模式會檢查文件是否存在,存在就往文件追加內容,否則就創建新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用來控制其他應用是否有權限讀寫該文件。
MODE_WORLD_READABLE:表示當前文件可以被其他應用讀取;MODE_WORLD_WRITEABLE:表示當前文件可以被其他應用寫入。
如果希望文件被其他應用讀和寫,可以傳入:
openFileOutput("itcast.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);

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


讀取文件內容

?

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 ;
??? }
}

?

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

??

把文件放入SD卡

?

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

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

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

mksdcard 2048M D:\AndroidTool\sdcard.img

在程序中訪問SDCard,你需要申請訪問SDCard的權限。

在AndroidManifest.xml中加入訪問SDCard的權限如下:

<!-- 在SDCard中創建與刪除文件權限 -->

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

<!-- 往SDCard寫入數據權限 -->

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

?

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

注意:訪問SDCard必須在AndroidManifest.xml中加入訪問SDCard的權限

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的狀態,如果手機裝有SDCard,并且可以進行讀寫,那么方法返回的狀態等于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 默認模式,在那里創建的文件只能由調用應用程序(或所有應用程序共享相同的用戶名訪問)。
FileOutputStream fos = this.openFileOutput(FILE_NAME, Context.MODE_APPEND);//可以在已有文件中追加內容?
FileOutputStream fos = this.openFileOutput(FILE_NAME, Context.MODE_WORLD_READABLE);//允許所有其他應用程序有讀權限創建的文件
FileOutputStream fos = this.openFileOutput(FILE_NAME, Context.MODE_WORLD_WRITEABLE);//允許所有其他應用程序具有寫訪問創建的文件。
注:如果調用FileOutputStream 時指定的文件不存在,Android會自動創建這個文件。

舉例:
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下。

相關文檔:

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

轉載于:https://www.cnblogs.com/qingblog/archive/2012/06/07/2540184.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。