【在android中读写文件】弓背霞明剑照霜,秋风走马出咸阳。这篇文章主要讲述在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 21protected void onCreate(Bundle savedInstanceState) { 22super.onCreate(savedInstanceState); 23setContentView(R.layout.activity_main); 24// existSDcard(); 25// write(); 26 //listPath(); 27read(); 28} 29 30private void write() { 31// /mnt/sdcard 32File file = Environment.getExternalStorageDirectory(); 33FileOutputStream out = null; 34try { 35out = new FileOutputStream(file.getPath() + "/bihu.txt"); 36// out = new FileOutputStream( 37// "/data/data/com.example.readwrite/bihu.txt"); 38out.write("12345".getBytes()); 39} catch (IOException e) { 40e.printStackTrace(); 41} finally { 42if (out != null) { 43try { 44out.close(); 45} catch (IOException e) { 46// TODO Auto-generated catch block 47e.printStackTrace(); 48} 49} 50} 51} 52 53private void read() { 54FileInputStream in = null; 55try { 56// in = new FileInputStream("/mnt/sdcard/bihu.txt"); 57in = new FileInputStream( 58"/data/data/com.jiguang.test/databases/rep.db"); 59byte[] bytes = new byte[2014]; 60int len = in.read(bytes); 61String str = new String(bytes, 0, len); 62Log.d("bihu", "---------" + str); 63} catch (IOException e) { 64Log.d("bihu","报错啦"+e.toString()); 65} finally { 66if (in != null) { 67try { 68in.close(); 69} catch (IOException e) { 70e.printStackTrace(); 71} 72} 73} 74} 75 76/** 77* 检查SD卡是否被挂载 78* */ 79private void existSDcard() { 80// 获取SD卡的状态 81String state = Environment.getExternalStorageState(); 82 83if (Environment.MEDIA_MOUNTED.equals(state)) { 84Log.d("bihu", "有SD卡"); 85} else { 86Log.d("bihu", "没有SD卡"); 87} 88} 89 90/** 91* 通过API获取路径 92* */ 93private void listPath() { 94// 获取SD卡目录 95File file1 = Environment.getExternalStorageDirectory(); 96Log.d("bihu", "sd卡----" + file1.getPath()); 97// 获取手机内部存储空间的file目录 98File file2 = getFilesDir(); 99Log.d("bihu", "内部存储File----" + file2.getPath()); 100// 获取内部存储空间的缓存目录 101File file3 = getCacheDir(); 102Log.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" 3package="com.example.readwrite" 4android:versionCode="1" 5android:versionName="1.0" > 6 7< !-- 在外部设备(SD卡)上写入的权限 --> 8< uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 9 10< uses-sdk 11android:minSdkVersion="8" 12android:targetSdkVersion="19" /> 13 14< application 15android:allowBackup="true" 16android:icon="@drawable/ic_launcher" 17android:label="@string/app_name" 18android:theme="@style/AppTheme" > 19< activity 20android:name=".MainActivity" 21android: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的SDK或者手机目录路径
- Android学习笔记06
- 修改android手机文件权限
- Android集成第三方微信登录
- AndroidFragment中调用getActivity为null的问题
- Android子线程进度条不显示的问题
- Android 那些年,处理getActivity()为null的日子
- HTML5 Plus移动App(5+App)开发入门指南
- Android封装类似微信的顶部TitleBar弹出的PopupWindow代码