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和工程文件的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CMake 学习笔记 —— 进阶
- 下一篇: 正则表达式在js和java中的使用