一、IO的学习方法:IO中包含了很多的类,推荐的学习方式是:“举一反三,掌握一种,以此类推”。
二、I/O操作的目标:
输入:从数据源(在数据源和程序之间建立的一个数据流淌的“管道”)中读取数据(文件、键盘、网络……)
输出:将数据写入到数据目的地当中(文件、屏幕、网络……)
注意:输入和输出是一个流向问题,从一个数据源读取数据到“java程序中”;从java程序输出数据到其他地方。输出输入相对于java程序本身
三、IO分类
一、第一种分法
1、 输入流
2、 输出流
二、第二种分法
1、字节流
2、字符流
三、第三种分法
1、节点流(普通的水管)
2、处理流(普通的水管+在水管外面再加一层):在节点流的基础上对数据做进一步处理
四、字节流与字符流
字节流:
1、InputStream/OutputStream是是所有字节输入流/输出流的父类,在Java的I/O流中所有对字节流处理的类,字节流都继承自InputStream类和OutputStream类,这是两个抽象类。
2、字节流示例:
public static void main(String[] args) {
FileInputStream fileInputStream=null;
FileOutputStream fileOutputStream=null;
try{
fileInputStream=new FileInputStream("e:/a.txt");
fileOutputStream=new FileOutputStream("e:/b.txt");
byte[] buffer=new byte[1024];
while (true){
int temp=fileInputStream.read(buffer,0,buffer.length);
if(temp==-1){
break;//跳出当前循环
}
//读取a文件中的数据
fileOutputStream.write(buffer,0,temp);
}
}catch (Exception e){
System.out.println("111");
}
finally {
try{
fileInputStream.close();
fileOutputStream.close();
}catch (Exception e){
System.out.println("读取文件失败");
}
}}
字符流:
1、Reader/Writer是是所有字节输入流/输出流的父类,在Java的I/O流中所有对字符流处理的类,字符流都继承自InputStream类和OutputStream类,这是两个抽象类。
2、使用示例:
public static void main(String[] args) {
FileReader fr=null;
BufferedReader br=null;
BufferedWriter bw=null;
try{
fr=new FileReader("e:/a.txt");
br=new BufferedReader(fr);
String line=null;
while (true){
line=br.readLine();
if(line==null){
break;
}
System.out.println(line);
}
}catch (Exception e){
System.out.println("文件读取失败");
}finally {
try{
fr.close();
}catch (Exception e){
System.out.println("444");
}
}
}
五、节点流和处理流
这里涉及到“装饰者模式”设计,具体见:https://i.cnblogs.com/EditPosts.aspx?opt=1