现在的位置: 首页 > 综合 > 正文

android 数据存储之文件操作

2017年10月14日 ⁄ 综合 ⁄ 共 2956字 ⁄ 字号 评论关闭

文件

首先要允许可以对外部存储卡进行写操作。

 

android.permission.WRITE_EXTERNAL_STORAGE

 

单元测试

.Instrumentation元素中加入android.test.InstrumentationTestRunner

 

目标包要和工程的包名相同。

 

  <uses-library

              android:name="android.test.runner" />

public class Test extends AndroidTestCase

单元测试中的测试方法必须是public 

文件写的一般步骤:

1、定义一个输出流用于写文件;

FileOutputStream fileOutputStream=null;

2、定义一个写文件的SD卡位置;

File file=new File(Environment.getExternalStorageDirectory(),fileName);

3、判断SD卡是否可用

if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()))

4、获得写入SD卡的数据输出流

fileOutputStream=new FileOutputStream(file);

 

5、把要写入的内容变成字节流(API)并写入输出流中。

fileOutputStream.write(content.getBytes());

6、判断输出流是否为空,不为空关闭输出流。

if(fileOutputStream!=null)

try {

//关闭流

fileOutputStream.close();

 

 

///////////////////////////////////

public boolean writeToSD(String fileName,String content)

{

boolean flag=false;

//定义一个输出流用于写文件

FileOutputStream fileOutputStream=null;

//获得写文件的SD卡位置

File file=new File(Environment.getExternalStorageDirectory(),fileName);

//判断SD是否可用

if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()))

{

try {

//获得写入SD卡的数据流

fileOutputStream=new FileOutputStream(file);

try {

//把要写入数据的字节流转化成输出流

fileOutputStream.write(content.getBytes());

flag=true;

Log.i("<<<<<<<<<<<<<<","-------------->>>>>>");

catch (IOException e) {

e.printStackTrace();

}

catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

finally {

//最后的流要关闭

if(fileOutputStream!=null)

try {

//关闭流

fileOutputStream.close();

catch (IOException e) {

e.printStackTrace();

}

}

}

return flag;

}

 

文件读的一般步骤:

1、定义一个输入流用于文件读,并且定义一个与硬盘无关的缓存的输出流,该输出流不需要关闭。

FileInputStream fileInputStream=null;

ByteArrayOutputStream outputStream=new ByteArrayOutputStream();

2、获取文件所在的SD卡的位置

File file=new File(Environment.getExternalStorageDirectory(),fileName);

3、判断SD卡是否可用

if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()))

a) 获取读文件的输入流,定义文件长度标志变量和用于读输入流的缓存字节数组。

//获取文件的输入流

fileInputStream=new FileInputStream(file);

//定义一个判断读完的标志和读缓冲字节数组

int len=0;

byte[] data=new byte[1024];

b) 循环判断是否读到文件末尾(-1末尾),将缓存数据写入缓存输出流中。

while((len=fileInputStream.read(data))!=-1)

//将缓冲数据写入字节输出流中

outputStream.write(data, 0, len);

4、将缓存输出流转换成字符串

//将字节输出流转化成字符串

return outputStream.toString();

public String readFileFromSD(String fileName)

{

//定义一个输入流用于文件的读

FileInputStream fileInputStream=null;

//缓存,和硬盘无关,不需要关闭

ByteArrayOutputStream outputStream=new ByteArrayOutputStream();

//获取读取文件的SD卡位置

File file=new File(Environment.getExternalStorageDirectory(),fileName);

//判断SD卡是否可用

if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()))

{

try {

//获取文件的输入流

fileInputStream=new FileInputStream(file);

//定义一个判断读完的标志和读缓冲字节数组

int len=0;

byte[] data=new byte[1024];

try {

while((len=fileInputStream.read(data))!=-1)

{

//将缓冲数据写入字节输出流中

outputStream.write(data, 0, len);

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//将字节输出流转化成字符串

return outputStream.toString();

}

抱歉!评论已关闭.