在android中读写文件

Posted 范仁义

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在android中读写文件相关的知识,希望对你有一定的参考价值。

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中读写文件的主要内容,如果未能解决你的问题,请参考以下文章

求问android怎么在代码里获得系统文件的读写权限?

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

在Android中,如何将数据从类传递到相应的布局/片段文件?

linux下c通过虚拟地址映射读写文件的代码

Android:更换片段时如何停止音乐?

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段