黑马程序员JAVA编程阶梯:基础篇之第二十章 下载本文

内容发布更新时间 : 2024/11/9 9:23:56星期一 下面是文章的全部内容请认真阅读。

【济南中心】JAVA编程阶梯:基础篇之第二十章

IO流概述及其分类: 1.概念

* IO流用来处理设备之间的数据传输 * Java对数据的操作是通过流的方式 * Java用于操作流的类都在IO包中 * 流按流向分为两种:输入流,输出流。 * 流按操作类型分为两种:

* 字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的

* 字符流 : 字符流只能操作纯字符数据,比较方便。 2.IO流常用父类

* 字节流的抽象父类: * InputStream * OutputStream * 字符流的抽象父类: * Reader * Writer 3.IO程序书写

* 使用前,导入IO包中的类 * 使用时,进行IO异常处理 * 使用后,释放资源

黑马程序员济南中心 编著

IO流之FileInputStream:字节流 read()一次读取一个字节 [Java] 纯文本查看 复制代码 ?

1 FileInputStream fis = new FileInputStream(\//创建一个文件输入流对象,并关联aaa.txt 2 int b; //定义变量,记录每次读到的字节

3 while((b = fis.read()) != -1) { //将每次读到的字节赋值给b并判断是否是-1 4 System.out.println(b); //打印每一个字节 5 } 6

7 fis.close(); //关闭流释放资源 问题:既然read()读取的是一个字节,为什么返回的是int,不是byte

因为字节输入流可以操作任意类型的文件,比如图片音频等,这些文件底层都是以二进制形式的存储的,如果每次读取都返回byte,有可能在读到中间的时候遇到111111111,那么这11111111是byte类型的-1,我们的程序是遇到-1就会停止不读了,后面的数据就读不到了,所以在读取的时候用int类型接收,如果11111111会在其前面补上24个0凑足4个字节,那么byte类型的-1就变成int类型的255了这样可以保证整个数据读完,而结束标记的-1就是int类型

IO流之FileOutputStream : write()一次写出一个字节 [Java] 纯文本查看 复制代码 ?

黑马程序员济南中心 编著

FileOutputStream fos = new FileOutputStream(\//如果没有bbb.txt,会创建出一个 1

//fos.write(97); //虽然写出的是一个int数,但是在写出的时候会将前面的24个0去掉,2

出的一个byte 3

fos.write(98); 4

fos.write(99); 5

fos.close();

例子:FileOutputStream的构造方法写出数据如何实现数据的追加写入 [Java] 纯文本查看 复制代码 ?

FileOutputStream fos = new FileOutputStream(\//如果没有bbb.txt,会创建出一个 1

//fos.write(97); //虽然写出的是一个int数,但是在写出的时候会将前面的24个0去掉,2

出的一个byte 3

fos.write(98); 4

fos.write(99); 5

fos.close(); 例子:拷贝图片 FileInputStream读取 FileOutputStream写出 [Java] 纯文本查看 复制代码 ?

01 FileInputStream fis = new FileInputStream(\致青春.mp3\//创建输入流对象,关联致青春.mp3

黑马程序员济南中心 编著

02 FileOutputStream fos = new FileOutputStream(\创建输出流对象,关联copy.mp3 03 04 int b;

05 while((b = fis.read()) != -1) { 06 fos.write(b); 07 } 08

09 fis.close(); 10 fos.close();

字节数组拷贝之available()方法 A:案例演示

* int read(byte[] b):一次读取一个字节数组 * write(byte[] b):一次写出一个字节数组 * available()获取读的文件所有的字节个数 * 弊端:有可能会内存溢出

[Java] 纯文本查看 复制代码 ?

1 FileInputStream fis = new FileInputStream(\致青春.mp3\2 FileOutputStream fos = new FileOutputStream(\

3 byte[] arr = new byte[fis.available()]; //根据文件大小做一个字节数组 4 fis.read(arr); //将文件上的所有字节读取到数组中

黑马程序员济南中心 编著

5 fos.write(arr); //将数组中的所有字节一次写到了文件上 6 fis.close(); 7 fos.close();

定义小数组的标准格式: A:案例演示

字节流一次读写一个字节数组复制图片和视频 [Java] 纯文本查看 复制代码 ?

01 FileInputStream fis = new FileInputStream(\致青春.mp3\02 FileOutputStream fos = new FileOutputStream(\03 int len;

04 byte[] arr = new byte[1024 * 8]; //自定义字节数组 05

06 while((len = fis.read(arr)) != -1) { 07 //fos.write(arr);

08 fos.write(arr, 0, len); //写出字节数组写出有效个字节个数 09 } 10

11 fis.close(); 12 fos.close();

黑马程序员济南中心 编著