[置顶] JAVA笔记之IO流第一部分

时间:2023-01-12 19:40:28

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流。