1,操作字符串存储到文件中
Context 类提供了一个openFileoutput() 方法,可以用于数据存储到指定的文件中,这个方法接收两个参数,第一个是文件名,第二个是文件的操作模式,主要有两种模式可选,MODE_PRIVATE 和MODE_APPEND ,其中MDOE_PRIVATE是默认的操作模式,表示指定同样的文件名时,所有的内容都会覆盖原来的内容,而APPEND则表示如果该文件已存在,就往文件里追加内容,不存在就创建新文件。下面举例:
/**
* 字符串存到文件中
*/
private void saveFile()
{
String fileData = "fileData to save here";
FileOutputStream fileOutputStream = null;
BufferedWriter bufferedWriter = null ;
try
{
fileOutputStream = openFileOutput("fileData",MODE_PRIVATE);
bufferedWriter = new BufferedWriter(new OutputStreamWriter(fileOutputStream));
bufferedWriter.write(fileData);
}catch (IOException e)
{
e.printStackTrace();
}finally {
try
{
if(bufferedWriter != null)
{
bufferedWriter.close();
}
}catch (IOException e)
{
e.printStackTrace();
}
}
}
从文件中读取数据:
/**
* 从文件读取数据
* @return
*/
private String getFileData()
{
StringBuffer stringBuffer = new StringBuffer();
FileInputStream fileInputStream;
BufferedReader bufferedReader = null ;
try
{
fileInputStream = openFileInput("fileData");
bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
String line ;
while((line = bufferedReader.readLine())!=null)
{
stringBuffer.append(line);
}
}catch (IOException e)
{
e.printStackTrace();
}finally {
try
{
if(bufferedReader != null)
{
bufferedReader.close();
}
}catch (IOException e)
{
e.printStackTrace();
}
}
return stringBuffer.toString() ;
}
2,操作对象存储到文件中
字符串保存到文件中的操作很少,更多的还是保存对象,
这里先创建一个对象Person
/**
* 这个对象必须序列化
*/
public class Person implements Serializable {
String name;
int age;
public Person(int age ,String name)
{
this.age = age;
this.name = name;
}
@Override
public String toString() {
return "name==="+this.name+"::::age===="+age;
}
}
保存对象到文件:
/**
* 保存对象到文件
* @param person
*/
private void saveObj2File(Person person)
{
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = null;
FileOutputStream fileOutputStream = null;
try {
objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(person);
byte[] output = byteArrayOutputStream.toByteArray();
fileOutputStream = openFileOutput("objData",MODE_PRIVATE);
fileOutputStream.write(output);
} catch (IOException e) {
e.printStackTrace();
} finally {
try
{
if(objectOutputStream != null)
{
objectOutputStream.close();
}
if(fileOutputStream != null)
{
fileOutputStream.close();
}
}catch (IOException e)
{
e.printStackTrace();
}
}
}
从文件中取出对象:
/**
* 从文件中取出对象
* @return
*/
private Person getObj()
{
Person person = null ;
FileInputStream fileInputStream = null;
try
{
/* File file = new File(this.getFilesDir(), "objData");
FileInputStream in = new FileInputStream(file);*/
fileInputStream = openFileInput("objData");
ObjectInputStream oin = new ObjectInputStream(fileInputStream);
person = (Person)oin.readObject();
}catch (Exception e)
{
e.printStackTrace();
}finally {
/* try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}*/
}
return person ;
}
对于一些简单的数据,文件操作是可行的。
网友评论