您的位置:首页 > 其它

在安卓手机中读写文件基本方法

2017-04-25 09:57 441 查看
做了很多年的Java B/S开发,主要应用场景都是一些企业级的应用或平台开发。大部分情况下对于数据的读写和存储都是在数据库或者服务器session中进行的。但是在安卓手机上,遇到本地文件的读写的情况还是挺多的,所以整理一下。

第一步:权限

在AndroidManifest.xml配置文件中增加对文件读取的权限:

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


第二步:代码

首先要确认的是,安卓不同于iOS,文件的读写是分为两种情况的:

1、手机内部存储

2、外接SD卡

尽管现在大部分的国产安卓手机都向苹果看齐,不提供外接SD卡的功能。但是我觉得对于程序员来说,还是要分清楚这两种状况的。毕竟手机厂商不提供SD卡支持,不代表Android操作系统层面并不支持。

先来看内部存储。内部存储的文件读写只有应用程序有权限,除非你有ROOT权限。不过好像现在的很多国产手机都是出厂自带ROOT的

先用以下代码来获取内部文件存储的路径,这个路径的实际物理位置最终与应用程序的安装路径有关:

this.getApplicationContext().getFilesDir();


拿到路径后,其实就是基本的Java文件读写的写法了:

//写入内部存储文件
File file = new File(this.getContext().getFilesDir(),"Hello World.txt");
FileOutputStream fileOutputStream = new FileOutputStream(file);
fileOutputStream.write(fileContent.getBytes());
fileOutputStream.flush();
fileOutputStream.close();

//从内部文件读取
File file = new File(this.getContext().getFilesDir(),"Hello World.txt");
FileInputStream fileInputStream = new FileInputStream(file);
int length = fileInputStream.available();
byte [] buffer = new byte[length];
fileInputStream.read(buffer);
String fileContent = EncodingUtils.getString(buffer, "UTF-8");
fileInputStream.close();


也许这就是Java程序员最大的好处了:一招鲜,吃遍天。毕竟Java的标准文件读写从上个世纪就存在并延续到今天了,几乎没有变化。

然后我们来看外部SD卡,首先需要使用Environment类来处理路径:

Environment.getExternalStorageDirectory();


得到路径后,其实后面的代码仍然是标准的Java文件读写,真的是“一招鲜”...

//写入SD卡存储文件
File file = new File(Environment.getExternalStorageDirectory(),"Hello World.txt");
FileOutputStream fileOutputStream = new FileOutputStream(file);
fileOutputStream.write(fileContent.getBytes());
fileOutputStream.flush();
fileOutputStream.close();

//从SD卡读取文件
File file = new File(Environment.getExternalStorageDirectory(),"Hello World.txt");
FileInputStream fileInputStream = new FileInputStream(file);
int length = fileInputStream.available();
byte [] buffer = new byte[length];
fileInputStream.read(buffer);
String fileContent = EncodingUtils.getString(buffer, "UTF-8");
fileInputStream.close();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: