文件
首先要允许可以对外部存储卡进行写操作。
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();
}