28 Java IO操作02字节流InputStreamOutputStream和字符流ReaderWriterWord文档下载推荐.docx
- 文档编号:16625248
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:11
- 大小:983.65KB
28 Java IO操作02字节流InputStreamOutputStream和字符流ReaderWriterWord文档下载推荐.docx
《28 Java IO操作02字节流InputStreamOutputStream和字符流ReaderWriterWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《28 Java IO操作02字节流InputStreamOutputStream和字符流ReaderWriterWord文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。
[零基础学JAVA]JavaSE应用部分-28.JavaIO操作(02)2009-02-25
上季内容回顾:
File类
RandomAccessFile类
--->
文件读、写操作
本季主要知识点:
1、字节流:
InputStream、OutputStream
2、字符流:
Reader、Writer
字节流和字符流
InputStream和OutputStream
为什么现在非要用子类去实例化InputStream和OutputStream呢?
查JDK文档
先完成向文件中写入数据:
OutputStream定义:
publicabstractclass
OutputStream
extends
Object
implements
Closeable,
Flushable
OutputStream是一个抽象类,如果是抽象类,则肯定要用其子类进行对象的实例化。
如果要向文件中保存,则要使用FileOutputStream。
就用这两个类完成向文件中写入一个字符串的目的。
FileOutputStream构造方法:
·
publicFileOutputStream(Filefile)throwsFileNotFoundException:
以File类的对象创建文件输出流
publicFileOutputStream(Filefile,booleanappend)throwsFileNotFoundException:
以File类的对象创建文件输出流,在最后的append参数表示的是是否在文件后面追加内容,默认是追加的。
publicFileOutputStream(Stringname)throwsFileNotFoundException:
直接写入文件的路径,进行输出操作,实际上里面就自动包含了一个File类的对象,自动进行实例化
publicFileOutputStream(Stringname,booleanappend)throwsFileNotFoundException
向输出流中写入内容:
publicvoidwrite(byte[]b)throwsIOException
现在要写入的内容是一个字符串,但是write方法接收的只能是一个byte数组,必须把字符串变为字符数组才可以。
以上的程序为字节的输出流,因为最终结果都是把字符串变为了byte数组了。
追加的时候就直接在后面写上一个控制的标记,内容为true:
out=newFileOutputStream(f,true);
看下效果:
现在我们灵活点哈~由外部输入
能否通过程序把在文件中的内容读进来呢?
InputStream
-->
字节肯定是byte数组
文件中的内容都是字节
InputStream中的方法:
把byte数组变为字符串就直接找String的构造方法。
因开辟byte[1024]空间,当读完文件中内容后剩余空间读不到数据就报错输出"
?
"
符号。
下面解决读取报错问题哈~
看下效果,现在出错的问号没有了,都换成空格了哈~
下面我们想办法将空格去掉哈~定义一个计数,计算到底一共读了多少位
如果直接使用InputStream类中的read()方法读取,则必须一个一个读,当文件读到底(read的返回值为-1时就表示文件读到底),则退出循环,之后用String把byte数组变为字符串输出。
使用另外一个read方法,传入一个byte数组,之后由类自动把内容赋给byte数组。
看下修改后的效果是否一样哈~
在字节流的操作中,可以发现一切都必须以byte数组为标准。
字符流:
直接支持字符的操作
使用Writer向文件中写入内容:
看下效果有没写入数据哈~
与之前的OutputStream在使用上是非常相似的,只是现在可以直接操作字符串了。
Reader的使用:
关于OutputStream与Writer及InputStream与Reader到底有那些区别呢?
字节流是没有使用到缓冲区的,是直接操作文件的
字符流是使用到了缓冲区,所有的内容要先放在缓冲区中,之后才能向文件中写入。
文件流最后没有关闭,内容也依然可以输出
现在把程序换成字符流,又会如何?
发现如果不关闭,则内容是无法输出的,因为内容全部都在缓冲区中,之前是因为调用了close()方法,所以会自动把缓冲区给清空掉。
可以直接使用强制性的把缓冲内容输出的操作完成。
publicabstractvoidflush()throwsIOException
证明字节流不使用缓冲区,字符流使用到缓冲区~~~
总结
练习题(下季讲解哈~~~)
掌握四个类的基本操作:
InputStream、OutputStream、Reader、Writer,分别的四个文件的操作子类:
FileXxx之类。
############################################
本文出自“王乾De技术博客”博客,谢绝转载!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 28 Java IO操作02字节流InputStreamOutputStream和字符流ReaderWriter IO 操作 02 字节 InputStreamOutputS
链接地址:https://www.bdocx.com/doc/16625248.html