-----------android培训、java培训、java+3G学习型技术博客、期待与您交流!------------
IO流框架图
IO流最终要以对象来体现,对象都存在IO包中。
流也进行分类:
1:输入流(读)和输出流(写)。
2:因为处理的数据不同,分为字节流和字符流。
那么为什么要有字符流呢?
因为字符每个国家都不一样。所以涉及到了字符编码问题。那么GBK编码的中文用unicode编码解析是有问题的。所以需要获取中文字节数据的同时+指定的编码表才可以解析正确数据。为了方便于文字的解析。所以将字节流和编码表封装成对象。这个对象就是字符流。这就是字符流的由来。只要操作的字符数据,优先考虑使用字符流体系。
字符流
import java.io.FileWriter;
import java.io.IOException;
public class Test17 {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
//创建一个文件流对象,并明确要操作的文件
//将文件创建到指定的路径,如果有同名文件会被覆盖
//这一步主要是确定要存储数据的目的地
FileWriter fw = new FileWriter("a.txt");
//调用write方法,将数据写入流中
fw.write("abcde");
//将流中的数据刷新到目的地中
/*flush()和close()的区别:flush()刷新后流还可以继续写入数据
close()关闭流之前会刷新流中的数据 但是关闭后不可以再续写数据*/
fw.flush();
//关闭流资源,在关闭之前会对数据刷新一次,将数据刷新到目的地中
fw.close();
}
}
import java.io.FileWriter;
import java.io.IOException;
public class Test17 {
/**
* @param args
* @throws IOException
**/
public static void main(String[] args) throws IOException {
//创建一个文件流对象,并明确要操作的文件
//将文件创建到指定的路径,如果有同名文件会被覆盖
//这一步主要是确定要存储数据的目的地
FileWriter fw = new FileWriter("a.txt");
//调用write方法,将数据写入流中
fw.write("abcde");
//将流中的数据刷新到目的地中
/*
flush()和close()的区别:
flush()刷新后流还可以继续写入数据
close()关闭流之前会刷新流中的数据
但是关闭后不可以再续写数据
*/
fw.flush();
//关闭流资源,在关闭之前会对数据刷新一次,将数据刷新到目的地中
fw.close();
} }
close()和flush()的区别:
flush():将缓冲区的数据刷到目的地中后,流可以使用。
close():将缓冲区的数据刷到目的地中后,流就关闭了,该方法主要用于结束调用的底层资源。
流在操作过程中的异常处理:
import java.io.FileWriter;
import java.io.IOException;
public class Test16 {
public static void main(String[] args) {
FileWriter fw = null;
try {
//指定的路径不正确或不存在 而抛出异常
fw = new FileWriter("Demo.java");
//数据写入过多,可能会写满硬盘从而抛出异常
fw.write("avddd");
} catch (IOException e) {
e.printStackTrace();
}
try {
if (fw!=null) {
//关闭的资源为空时不能调用close方法 从而抛出异常
fw.close();
}
fw.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.FileWriter;
import java.io.IOException;
public class Test16 {
public static void main(String[] args) {
FileWriter fw = null;
try {
//指定的路径不正确或不存在 而抛出异常
fw = new FileWriter("Demo.java");
//数据写入过多,可能会写满硬盘从而抛出异常
fw.write("avddd"); }
catch (IOException e) {
e.printStackTrace();
}
try {
if (fw!=null) {
//关闭的资源为空时不能调用close方法 从而抛出异常
fw.close(); }
fw.flush();
} catch (IOException e) { e.printStackTrace(); } } }
FileReader:使用Reader体系,读取一个文本文件中的数据。
创建可以读取文本文件的流对象。让创建好的流对象和指定的文件相关联。
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Test18 {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
//创建可以读取文件的流对象FileReader 将流对象和文件相关联
FileReader fr = new FileReader("a.txt");
int ch =0;
//调用read方法 读取一个字符
while ((ch = fr.read())!=-1) {
System.out.println((char)ch);
}
}
}
详细请查看:http://net.itheima.com