28 Java IO操作02字节流InputStreamOutputStream和字符流ReaderWriter.docx

上传人:b****5 文档编号:3720436 上传时间:2022-11-24 格式:DOCX 页数:11 大小:983.65KB
下载 相关 举报
28 Java IO操作02字节流InputStreamOutputStream和字符流ReaderWriter.docx_第1页
第1页 / 共11页
28 Java IO操作02字节流InputStreamOutputStream和字符流ReaderWriter.docx_第2页
第2页 / 共11页
28 Java IO操作02字节流InputStreamOutputStream和字符流ReaderWriter.docx_第3页
第3页 / 共11页
28 Java IO操作02字节流InputStreamOutputStream和字符流ReaderWriter.docx_第4页
第4页 / 共11页
28 Java IO操作02字节流InputStreamOutputStream和字符流ReaderWriter.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

28 Java IO操作02字节流InputStreamOutputStream和字符流ReaderWriter.docx

《28 Java IO操作02字节流InputStreamOutputStream和字符流ReaderWriter.docx》由会员分享,可在线阅读,更多相关《28 Java IO操作02字节流InputStreamOutputStream和字符流ReaderWriter.docx(11页珍藏版)》请在冰豆网上搜索。

28 Java IO操作02字节流InputStreamOutputStream和字符流ReaderWriter.docx

28JavaIO操作02字节流InputStreamOutputStream和字符流ReaderWriter

28.JavaIO操作(02)

本季知识点:

字节流:

InputStream、OutputStream和字符流:

Reader、Writer。

本季详细的讲解了JAVA中字节流与字符流的基本操作,实现了向文件中写入数据的功能,之后又讲解了字节流与字符流的区别。

blog:

[零基础学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数组为标准。

字符流:

直接支持字符的操作 

Reader、Writer

使用Writer向文件中写入内容:

看下效果有没写入数据哈~

与之前的OutputStream在使用上是非常相似的,只是现在可以直接操作字符串了。

Reader的使用:

关于OutputStream与Writer及InputStream与Reader到底有那些区别呢?

 

·字节流是没有使用到缓冲区的,是直接操作文件的 

·字符流是使用到了缓冲区,所有的内容要先放在缓冲区中,之后才能向文件中写入。

OutputStream

看下效果:

文件流最后没有关闭,内容也依然可以输出

现在把程序换成字符流,又会如何?

发现如果不关闭,则内容是无法输出的,因为内容全部都在缓冲区中,之前是因为调用了close()方法,所以会自动把缓冲区给清空掉。

可以直接使用强制性的把缓冲内容输出的操作完成。

 

publicabstractvoidflush()throwsIOException

看下效果:

证明字节流不使用缓冲区,字符流使用到缓冲区~~~

总结

练习题(下季讲解哈~~~)

掌握四个类的基本操作:

 

InputStream、OutputStream、Reader、Writer,分别的四个文件的操作子类:

FileXxx之类。

############################################

本文出自“王乾De技术博客”博客,谢绝转载!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1