1. 程式人生 > >在android中讀寫文件

在android中讀寫文件

sdk ack pub 只有一個 ont miss apk view save

在android中讀寫文件

android中只有一個盤,正斜杠/代表根目錄。

我們常見的SDK的位置為:/mnt/sdcard

兩種最常見的數據存儲方式:

一、內存

二、本地

  1.手機內部存儲

  2.外部存儲設備(SD卡)

在SD卡中讀數據是不需要權限的,但是在SD卡中寫數據是要權限的:

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

讀寫文件的方式就是用的Java的文件輸入流和輸出流,和在java中讀寫文件的方法幾乎一模一樣。

代碼:

com.example.readwrite.MainActivity

技術分享
  1 package com.example.readwrite;
  2 
  3 import java.io.File;
  4 import java.io.FileInputStream;
  5 import java.io.FileOutputStream;
  6 import java.io.IOException;
  7 
  8 import android.app.Activity;
  9 import android.os.Bundle;
 10 import android.os.Environment;
 11 import android.util.Log;
12 13 /** 14 * 正斜杠代表根目錄 兩種最常見的數據存儲方式 15 * 16 * 一、內存 二、本地 1.手機內部存儲 2.外部存儲設備(SD卡) 17 * */ 18 public class MainActivity extends Activity { 19 20 @Override 21 protected void onCreate(Bundle savedInstanceState) { 22 super.onCreate(savedInstanceState); 23 setContentView(R.layout.activity_main);
24 // existSDcard(); 25 // write(); 26 // listPath(); 27 read(); 28 } 29 30 private void write() { 31 // /mnt/sdcard 32 File file = Environment.getExternalStorageDirectory(); 33 FileOutputStream out = null; 34 try { 35 out = new FileOutputStream(file.getPath() + "/bihu.txt"); 36 // out = new FileOutputStream( 37 // "/data/data/com.example.readwrite/bihu.txt"); 38 out.write("12345".getBytes()); 39 } catch (IOException e) { 40 e.printStackTrace(); 41 } finally { 42 if (out != null) { 43 try { 44 out.close(); 45 } catch (IOException e) { 46 // TODO Auto-generated catch block 47 e.printStackTrace(); 48 } 49 } 50 } 51 } 52 53 private void read() { 54 FileInputStream in = null; 55 try { 56 // in = new FileInputStream("/mnt/sdcard/bihu.txt"); 57 in = new FileInputStream( 58 "/data/data/com.jiguang.test/databases/rep.db"); 59 byte[] bytes = new byte[2014]; 60 int len = in.read(bytes); 61 String str = new String(bytes, 0, len); 62 Log.d("bihu", "---------" + str); 63 } catch (IOException e) { 64 Log.d("bihu","報錯啦"+e.toString()); 65 } finally { 66 if (in != null) { 67 try { 68 in.close(); 69 } catch (IOException e) { 70 e.printStackTrace(); 71 } 72 } 73 } 74 } 75 76 /** 77 * 檢查SD卡是否被掛載 78 * */ 79 private void existSDcard() { 80 // 獲取SD卡的狀態 81 String state = Environment.getExternalStorageState(); 82 83 if (Environment.MEDIA_MOUNTED.equals(state)) { 84 Log.d("bihu", "有SD卡"); 85 } else { 86 Log.d("bihu", "沒有SD卡"); 87 } 88 } 89 90 /** 91 * 通過API獲取路徑 92 * */ 93 private void listPath() { 94 // 獲取SD卡目錄 95 File file1 = Environment.getExternalStorageDirectory(); 96 Log.d("bihu", "sd卡----" + file1.getPath()); 97 // 獲取手機內部存儲空間的file目錄 98 File file2 = getFilesDir(); 99 Log.d("bihu", "內部存儲File----" + file2.getPath()); 100 // 獲取內部存儲空間的緩存目錄 101 File file3 = getCacheDir(); 102 Log.d("bihu", "內部存儲緩存目錄----" + file3.getPath()); 103 } 104 }
主界面

/讀寫本地文件/AndroidManifest.xml

技術分享
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="com.example.readwrite"
 4     android:versionCode="1"
 5     android:versionName="1.0" >
 6     
 7     <!-- 在外部設備(SD卡)上寫入的權限 -->
 8     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 9 
10     <uses-sdk
11         android:minSdkVersion="8"
12         android:targetSdkVersion="19" />
13 
14     <application
15         android:allowBackup="true"
16         android:icon="@drawable/ic_launcher"
17         android:label="@string/app_name"
18         android:theme="@style/AppTheme" >
19         <activity
20             android:name=".MainActivity"
21             android:label="@string/app_name" >
22             <intent-filter>
23                 <action android:name="android.intent.action.MAIN" />
24 
25                 <category android:name="android.intent.category.LAUNCHER" />
26             </intent-filter>
27         </activity>
28     </application>
29 
30 </manifest>
配置文件

在android中讀寫文件