1.IO流:是input(输入)和output(输出)的缩写 负责不同设备间的数据传输
2.IO流的分类:
a.根据流向分类
a1:输入流:把数据从硬盘读取到内存。
a2:输出流:把数据从内存写到硬盘中。
b.根据操作单位分类
b1:字节流:
以字节为单位的IO流,操作的是字节,每次读写都是以字节为单位。
字节流可以操作任意类型的文件。因为所有的文件都是以字节的形式存储的。
b2:字符流:
以字符为单位的IO流,操作的是字符,每次读写都是以字符为单位。
字符流可以操作文本类文件,因为只有在文本类文件上才能用到字符。
3.IO流的抽象基类
a:字节输入流:InputStream。
b:字节输出流:OutputStream。
c:字符输入流:Reader。
d: 字符输出流:Writer。
4.IO流的常用子类
a:基本字节输入流:FileInputStream。
b: 基本字节输出流:FileOutputStream。
c: 基本字符输入流:FileReader。
d: 基本字符输出流:FileWriter。
5.FileInputStream:
a:构造方法
FileInputStream(String name)
b:常用方法
int read()读取一个字节
FileInputStream fis=new FileInputStream("a.txt");
int x;
while((x=fis.read())!=-1){
System.out.println(x);
}
fis.close();//关闭流
7.文件的拷贝
FileInputStream fis = new FileInputStream("a.jpg");
FileOutputStream fos = new FileOutputStream("b.jpg");
int len;
while((len = fis.read()) != -1) {
fos.write(len);
}
fis.close();
fos.close();
FileInputStream fis = new FileInputStream("a.jpg");
FileOutputStream fos = new FileOutputStream("b.jpg");
byte[] arr = new byte[1024 * 8];
int len;
while((len = fis.read(arr)) != -1) {
fos.write(arr,0,len);
}
fis.close();
fos.close();
9.缓冲流拷贝:
FileInputStream fis = new FileInputStream("a.jpg");
FileOutputStream fos = new FileOutputStream("b.jpg");
BufferedInputStream bis = new BufferedInputStream(fis);
BufferedOutputStream bos = new BufferedOutputStream(fos);
int len;
while((len = bis.read()) != -1) {
bos.write(len);
}
bis.close();
bos.close();
10.flush方法和close方法的区别:
flush方法:刷新缓冲区。
close方法:关闭IO流和刷新缓冲区。
12.JDK1.7之后IO标准异常处理
try(){
}
注意:把IO流放在try里使用 使用之后会自行关闭IO流。