IO流按功能分为节点流 处理流
节点流:可以从或向一个特定的地方读写字节数据;
处理流:对一个已经存在的流的连接和封装,通过所封装的流的功能调用实现数据重写。
1.字节输入流InputStream, void close; int read() ;
2.文件输入流FileInputStream
3.字节输出流 OutputStream,抽象类不能实例化对象。void close();void flush()刷新此输出流并强制写出所有缓冲的输出字节。
4.文件输出流 FileOutputStream
5.字符输入流 Reader 所有输入流的父类,是抽象类不能实例化对象。使用他的子类FileReader;
6.字符输出流 writer 所有字符输出流的父类,是一个抽象类不能实例化对象 同样是使用子类FildWriter
1.使用字节流复制文件
public static void copy1() throws Exception{
//1创建字节文件输入输出流
InputStream is=new FileInputStream("d:\\003.jpg");
OutputStream os=new FileOutputStream("d:\\004.jpg");
//2读、写
byte[] buf=new byte[1024*4];
int len=0;
while((len=is.read(buf))!=-1){
//buf缓冲区,0从第一个位置写,len写的长度
os.write(buf,0,len);
}
//3关闭
is.close();
os.close();
System.out.println("复制完成");
}
2.使用字符流复制文件
public static void copy2() throws Exception{
//1创建字符输入输出流
Reader reader=new FileReader("d:\\003.jpg");
Writer writer=new FileWriter("d:\\005.jpg");
//2读写
char[] buf=new char[1024*4];
int len=0;
while((len=reader.read(buf))!=-1){
writer.write(buf, 0, len);
}
//3关闭
reader.close();
writer.close();
System.out.println("复制完成");
}
如果复制的文件是文本文件,用字节流和字符流都可以
如果复制的是图片,音乐视频 使用字节流复制