黑马程序员技术交流社区
标题:
IO流
[打印本页]
作者:
vvvvvc
时间:
2016-6-8 00:00
标题:
IO流
IO流:
1、用来处理设备之间的数据传输
2、java进行数据传输使用的就是流的方式
3、所在的包,io包
4、分类:
流向分类:
输入流和输出流
内容分类:
字节流和字符流
5、常用父类:
InputStream 字节输入流的顶层抽象父类
OutputStream 字节输出流的顶层抽象父类
Reader 字符输入流的顶层抽象父类
Writer 字符输出流的顶层抽象父类
6、程序书写:
写之前导包
写的时候进行异常处理
写之后要关闭资源
FileInputStream的使用:
1、如何创建一个对象
new FileInputStream("a.txt");
2、read()
读取一个字节
注意:返回的是一个int类型
3、如果到了文件的结尾,返回的是-1
为何read()方法返回值是int类型:
如果使用byte类型,当文件中出现了11111111的时候,
明明是一个有效的数据,由于读出来是-1,我们误认为是结束标记,所以不能这样做
如果使用int类型,读出的数据通通加上24个0,如果出现了11111111的时候,加上0之后就不再是-1了
FileOutputStream
1、如何创建对象
new FileOutputStream("z.txt");
文件不存在就创建文件
如果文件原来就存在,那么就先清空然后,以后调用write再写
2、write方法
用来写出一个字节,参数是int类型,所以在写出的时候,要将前面的24个0去掉
3、FileOutputStream("z.txt",true)
原来的文件内容不干掉,继续追加写出
一个参数的构造其实底层调用的也是两个参数的构造,只不过第二个参数传了一个false
文件的拷贝:
1、从一个文件中读入,FileInputStream,read方法,一个字节一个字节的读入到内存
2、再使用FileOutputStream write方法,一个字节一个字节的写出到另一个文件中
文件的拷贝之available方法:
1、available方法,输入流的方法,返回所关联的文件的字节个数
2、read(byte[] b)
3、write(byte[] b)
两个极端:
1、一个一个的拿
2、一次性将所有的鸡蛋都拿回家
定义小数组:
1、read(byte[] arr),返回的类型是int,返回的是读到的有效字节的个数
返回值的范围-1,1~arr.length
2、read(byte[] arr)返回的是int类型,read()返回的也是int类型
区别: read(byte[] arr) 返回的数据的含义是读到的有效字节的个数
read() 返回的int是指的真正要读取的数据
3、write(byte[] arr, int offset, int length)
write(byte[] arr, 0, int length)
小数组的标准格式:
数组的长度为1024的整数倍
带缓冲区的字节流:
1、 BufferedInputStream bis = new BufferedInputStream(new FileInputStream("a.txt"))
bis.read();
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("b.txt"))
bos.write(97);
2、 理解,读取一个字节,就一次性读取8192字节
写出一个字节,并不直接写出到文件,而是写到缓冲区,写满缓冲区,才往文件中写。
flush和close的区别:
1、flush是刷新,将缓冲区的数据,立刻写到文件中
2、close是关流,先将缓冲区的数据,立刻写到文件中,然后将流对象关闭
刷新什么情况下会发生:
1、手动调用flush
2、手动调用close
3、缓冲区写满了
字节流读写中文:
1、字节流读中文,有可能出现半个字符的情况,也就是读到了半个中文,结果出现乱码
2、字节流写中文,比较麻烦,先将字符串转成字节数组,再写出到文件中
jdk1.6
1、创建流和使用流都是在try
2、关闭流是在finally
判断流对象是否为空
两个流,能关一个算一个,所以将第一个的关闭放到try里面,第二个流的关闭放到finally
也就形成了finally的嵌套
jdk1.7版本处理异常:
1、try后面跟着小括号,小括号里面写的是流对象的创建
2、小括号后面跟着大括号,大括号里面写的是流对象的使用和操作
3、大括号里面的内容执行完以后,小括号里面创建的流对象就会被自动关闭,所以不用手动的写关闭方法
作者:
929710618
时间:
2016-6-8 00:25
明天我们要讲这个内容,就当是先预习了
作者:
zhanchen
时间:
2016-6-8 00:45
这么详细,已经收下
作者:
cuisq
时间:
2016-6-8 01:38
很好很透彻,收藏了,多谢楼主
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2