package com.example.saveAndRead;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.http.util.ByteArrayBuffer;
import android.content.Context;
public class FileService {
private Context context;
public FileService(Context context){
this.context=context;
}
public void save(String name,String content) throws IOException{
// 由于页面输入的都是文本信息,所以当文件名不是以.txt后缀名结尾时,自动加上.txt后缀
if(!name.endsWith(".txt")){
name = name+".txt";
}
// Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND 这两种都是只能被本程序访问
// Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
// Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。
// MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。
// 如果希望文件被其他应用读和写,可以传入:
// openFileOutput("output.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
FileOutputStream outStream = context.openFileOutput(name, Context.MODE_PRIVATE);
outStream.write(content.getBytes());
outStream.close();
}
public String read(String name) throws IOException{
// 由于页面输入的都是文本信息,所以当文件名不是以.txt后缀名结尾时,自动加上.txt后缀
if(!name.endsWith(".txt")){
name = name+".txt";
}
FileInputStream inputStream =context.openFileInput(name);
//字节数组流:ByteArrayOutputStream: 可以捕获内存缓冲区的数据,转换成字节数组。
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();//实例化内存
byte[] buffer = new byte[1024];
int len=0;
while((len=inputStream.read(buffer))!=-1){ //判断读取是否满,满了返回-1
byteStream.write(buffer, 0, len);//写入内存
}
byte[] data =byteStream.toByteArray(); //转化为byte[]
byteStream.close();
inputStream .close();
return new String(data);//转化为String
}
}