IO:
-
目的:读写文件中的内容
-
流:一连串流动的数据,先进先出的方式传输信息,管道
-
数据源 目的地–>以程序为中心划分读入写出
-
流的分类:
-
按照流向分:
-
输入流
-
输出流
-
按操作单元分:
-
字节流
-
字符流
-
按功能分:
-
节点流
-
功能流
-
分类之间是相符想成的,互不冲突
-
字节流:是万能的 ***** 功能:节点流
-
InputStream 字节输入流 此抽象类是表示字节输入流的所有类的超类。
-
FileInputStream 从文件系统中的某个文件中获得输入字节。
-
OutputStream 字节输出流
-
字节输出流 OutputStream 此抽象类是表示输出字节流的所有类的超类
FileOutputStream文件输出流是用于将数据写入 File
拷贝文件
//静态方法
public static void copyFile(String src,String dest){
copyFile(new File(src),new File(dest));
}
public static void copyFile(File src,File dest){
//2.选择流
InputStream is=null;
OutputStream out=null;
try {
is=new FileInputStream(src);
out=new FileOutputStream(dest);
//3.操作
byte[] car=new byte[1024];
int len=-1;
while((len=is.read(car))!=-1){
out.write(car, 0, len);
}
//4.刷出
out.flush();} catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ //5.关闭 if(out!=null){ try { out.close(); } catch (IOException e) { e.printStackTrace(); } } if(is!=null){ try { is.close(); } catch (IOException e) { e.printStackTrace(); } } }
}
}
字符流 :只能读写纯文本内容 功能分:节点流
- Reader 字符输入流 FileReader 文件字符输入流
- Writer 字符输出流 FileWriter
字符流 字节流 -->节点流
- 包裹节点流,在节点流之上–>功能流|处理流
- 处理流:增强功能,提高性能的作用,在节点流之外才能使用,不能代替节点流
- 缓冲流:提高性能
- 字节缓冲流 BufferedInputStream BufferedOutputStream 无新增方法
字符缓冲流 不能发生多态,因为存在新增方法 - BufferedReader 字符输入缓冲流 新增方法 readLine() 读取一行
- BufferedWriter 字符输出缓冲流 新增方法 newLine() 写出换行符
- Data流 ->基本数据类型流,读入写出带有基本数据类型的数据+字符串数据
- 功能流,必须要包裹节点流使用(字节流)
- DataInputStream 新增方法 readXxx()
- DataOutputStream 新增方法 writeXxx()