一、JAVA IO
首先具备介绍一下JAVA IO的基础知识,点击链接:白大虾,这篇有很详细的介绍。
Java IO原理
-
IO流用来处理设备之间的数据传输。
-
Java程序中,对于数据的输入/输出操作以"流(stream)" 的方式进行。
-
java.io包下提供了各种"流"类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。
流的分类
-
按操作数据单位不同分为:字节流(8 bit),字符流(16 bit)
-
按数据流的流向不同分为:输入流,输出流
-
按流的角色的不同分为:节点流,处理流
(抽象基类) | 字节流 | 字符流 |
输入流 | InputStream | Reader |
输出流 | OutputStream | Writer |
-
Java的IO流共涉及40多个类,实际上非常规则,都是从如上4个抽象基类派生的。
-
由这四个类派生出来的子类名称都是以其父类名作为子类名后缀。
-
字节流:以byte为单位传输
-
字符流:以char为单位传输
IO流体系
二、举个例子
保存文件到内存:
/**
* @Description: /data/data/** /files目录写数据
* @param: 调用该方法的Context;要写入的string
* @return:
*/
public void fileWrite(Context context,String buf){
// String filename参数:在/data/data//files目录下存储时的文件名。
// int mode参数:文件的操作模式,主要有两种模式可选择:MODE_PRIVATE, MODE_APPEND。
// 默认为MODE_PRIVATE,当指定相同文件名进行读写的时候,新的内容会覆盖原有内容;
try {
FileOutputStream fileOutputStream = context.openFileOutput("text", MODE_PRIVATE);
PrintWriter writer = new PrintWriter(new OutputStreamWriter(fileOutputStream));
writer.write("fileWrite..........."); //写入固定的String
writer.write(buf); //写入输入的String
writer.write("\n"); //写入换行符
writer.flush();
writer.close();
fileOutputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @Description: /data/data/** /files目录读数据
* @param: 调用该方法的Context
* @return:
*/
public void fileRead(Context context){
String line = "";
try {
FileInputStream fileInputStream = context.openFileInput("text");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
line = bufferedReader.readLine();
while (line != null) {
Log.e(TAG, "fileRead :" + line);
//回调的方式
mFileSaveCallback.onFileRead(line);
line = bufferedReader.readLine();
}
bufferedReader.close();
fileInputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @Description: /data/data/ ** /cache 目录写数据
* @param:
* @return:
*/
public void cacheWrite(Context context,String buf){
File file = new File(context.getCacheDir(), "cache_dir_text");//创建/data/data/<package name>/cache/cache_dir_text文件对象。
if (!file.exists()) {
try {
file.createNewFile();//如果文件不存在,则创建
FileOutputStream fos = new FileOutputStream(file);
PrintWriter writer = new PrintWriter(new OutputStreamWriter(fos));
writer.write("cacheWrite......."); //写入固定的String
writer.write(buf); //写入出入的String
writer.write("\n"); //写入换行符
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* @Description: /data/data/ ** /cache 目录读数据
* @param:
* @return:
*/
public void cacheRead(Context context){
File file = new File(context.getCacheDir(), "cache_dir_text");
try {
FileInputStream fis = new FileInputStream(file);
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
String line1 = br.readLine();
while(line1!=null){
//回调的方式
mFileSaveCallback.oncacheRead(line1);
Log.e(TAG, " " + line1);
line1 = br.readLine();
}
br.close();
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
源码地址:
参考资料:
1、java IO https://www.cnblogs.com/baixl/p/4170599.html
2、Android中数据存储——文件存储数据 http://blog.csdn.net/to_be_designer/article/details/48274025