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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android读写assets、raw、sdard和工程文件的方法

發布時間:2025/3/21 Android 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android读写assets、raw、sdard和工程文件的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  Android開發離不開對文件的操作,前面的文章“Android簡易數據存儲之SharedPreferences”和“Android數據存儲之SQLite的操作”,分別講解了簡單的數據的存儲和數據庫數據的操作。然而,前面的兩篇文章都未涉及具體文件的操作。下面來看下Android是怎么操作其內置目錄文件及外部sdcard數據的。

  環境:Android studio、海馬玩模擬器

  資源文件:

    /assets目錄下test.txt

aaaaaaaaaaaaaa bbbbbbb

    /res/raw(需要手工創建)目錄下rawfile.txt

raw file ddddddddddd eeeeeeeeee ffffffffff

  一、讀取assets目錄下的文件

//讀寫assets目錄下的文件InputStream is = getResources().getAssets().open("test.txt");Reader in = new InputStreamReader(is);BufferedReader bufferedReader = new BufferedReader(in);String line = null;while (null != (line = bufferedReader.readLine()) ){System.out.println("assets file==========" + line);}bufferedReader.close();in.close();is.close();

  由于assets下的文件不會再R.java中生成相應的ID,因此Android提供了AssetManager的方法訪問assets下的資源。

  二、讀取raw目錄下的文件

//讀取raw目錄下的文件,raw位于res目錄下,需要手工創建is = getResources().openRawResource(R.raw.rawfile);in = new InputStreamReader(is);bufferedReader = new BufferedReader(in);line = null;while (null != (line = bufferedReader.readLine()) ){System.out.println("rawfile==========" + line);}bufferedReader.close();in.close();is.close();

  三、讀寫工程內部文件

//讀寫工程內部文件FileOutputStream fileOutputStream = openFileOutput("projectfile.txt", Context.MODE_PRIVATE);OutputStreamWriter osw = new OutputStreamWriter(fileOutputStream);BufferedWriter bw = new BufferedWriter(osw);bw.write("ooooooooooooooooooo");bw.close();osw.close();fileOutputStream.close();FileInputStream fileInputStream = openFileInput("projectfile.txt");InputStreamReader isr = new InputStreamReader(fileInputStream);char[] input = new char[fileInputStream.available()];isr.read(input);isr.close();fileInputStream.close();String str = new String(input);System.out.println("project file=============" + str);

  四、讀寫sdcard文件

  1、AndroidManifest.xml中添加權限控制

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

  2、讀寫sdcard文件

//讀寫sdcard,需要在AndroidManifest.xml中添加權限說明//<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>File file = Environment.getExternalStorageDirectory();//獲取sdcard路徑if(file.exists()){//判斷是否存在sdcardSystem.out.println("sdcard file path========" + file.getAbsolutePath());File myfile = new File(file, "myfile_sdcard.txt");myfile.createNewFile();FileOutputStream fos = new FileOutputStream(myfile);fos.write("AAAAAAAAAAa".getBytes());fos.flush();fos.close();}//讀取sdcard文件File file1 = new File(file, "myfile_sdcard.txt");InputStream inputStream = new FileInputStream(file1);Reader reader = new InputStreamReader(inputStream);BufferedReader bufferedReader1 = new BufferedReader(reader);String iline = null;while(null != (iline = bufferedReader1.readLine())){System.out.println("from sdcard myfile_sdcard.txt============" + iline);}bufferedReader1.close();reader.close();inputStream.close();

  五、將APP運行到模擬器中,此時可以看到如下的輸出結果

09-13 09:44:57.520 2243-2243/com.example.ibm.dataoperate I/System.out﹕ assets file==========aaaaaaaaaaaaaa 09-13 09:44:57.524 2243-2243/com.example.ibm.dataoperate I/System.out﹕ assets file==========bbbbbbb 09-13 09:44:57.528 2243-2243/com.example.ibm.dataoperate I/System.out﹕ rawfile==========raw file 09-13 09:44:57.528 2243-2243/com.example.ibm.dataoperate I/System.out﹕ rawfile==========ddddddddddd 09-13 09:44:57.532 2243-2243/com.example.ibm.dataoperate I/System.out﹕ rawfile==========eeeeeeeeee 09-13 09:44:57.532 2243-2243/com.example.ibm.dataoperate I/System.out﹕ rawfile==========ffffffffff 09-13 09:44:57.544 2243-2243/com.example.ibm.dataoperate I/System.out﹕ project file=============ooooooooooooooooooo 09-13 09:44:57.552 2243-2243/com.example.ibm.dataoperate I/System.out﹕ sdcard file path========/mnt/sdcard 09-13 09:44:57.556 2243-2243/com.example.ibm.dataoperate I/System.out﹕ from sdcard myfile_sdcard.txt============AAAAAAAAAAa

  上述四種操作Android文件的方式,各個處理方式都有所不同。

    1、讀取assets目錄下的資源文件時需要通過getResources().getAssets()方法獲取AssetManager的open方法來進行處理;

    2、而讀取raw目錄下的資源文件則通過getResources().openRawResource(R.raw.資源名稱)的方式來獲取;

    3、讀寫工程其他目錄的文件則通過openFileOutput和openFileInput來進行處理;

    4、最后sdcard文件的操作需要額外在AndroidManifest.xml中進行權限的聲明,并通過Environment.getExternalStorageDirectory()獲取sdcard的路徑,剩下的就是Java對文件的操作了。

總結

以上是生活随笔為你收集整理的Android读写assets、raw、sdard和工程文件的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

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