| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> java流知识小结 -> 正文阅读 |
|
[Java知识库]java流知识小结 |
一、流的分类????InputStream 抽象字节输入流类 ????OuputStream 抽象字节输出流类 ????Reader 抽象字符输入流类 ? ? Writer 抽象字符输出流类 二、字节输入流类及其子类??? ? ?三、字节输出的类及其子类? 四、字符输入,输出流类??1.抽象字符流: ??Reader? ? ? ? ? ? ? ? ?Writer ??2.文件字符流: ??FileReader? ? ? ? ? ? FileWriter ??3.缓冲字符流: ??BufferedReader? ? ?BufferedWriter /** ?*凡是字符流都有缓存,写数据时一定要记得刷缓存(flush), ?????否则数据不一定会及时写出去。close方法在关流之前会调一次flush ?*/ 五、DataInputStream,DataOutputStream1.需要套接,里面可套接一个文件输入,输出流 2.写的时候可利用溢出来控制循环结束 ??如:
3.读的时候可利用in.available判断循环结束,也可利用异常的方式判断文件结束 ??????如:?while(in.available()>0){//利用available()来判断文件结束
六、FileInputStream,FileOutputStream1.创建一个文件流 ??如:
2.可利用In.available判断循环结束 ?????如:
3.文件输出流可以以追加的方式写文件,即程序运行几次就往目标文件写入几次信息 ??????如:
七、ObjectInputStream,ObjectOutputStream??1.输出的类对象必须实现序列化(即实现Serializabe接口)? 2.一般也需要套接一个文件字节输入,输出流 3.利用异常来结束文件的读取 ??如:??
八、printStream,printWriter????1)只有输出没有输入。PrintStream是字节打印流,PrintWriter是字符打印流。 ????2)能够方便地打印各种数据“值表示形式”,提供了一系列的打印功能(只有它有,其它流都没有。) ???3)和其他输出流不同,它永远不会抛出IOException异常(构造方法除外),异常内部解决且设置了内部标志。 ??4)可创建具有自动刷新的功能,可使用带换行符的println()方法。 ????autoFlush - boolean 变量;如果为 true,则 println、printf 或 format 方法将刷新输出缓冲区。---其实是因为这几个方法中帮我们调用了out.flush()。 ??5)(在构造方法中)可以指定字符集编码的。 九、ByteArrayInputStream、ByteArrayOutputStream字节数组流CharArrayReader与CharArrayWriter字符数组流 StringReader 与 StringWriter字符串流 1、用于操作字节数组的流对象,其实它们就是对应设备为内存的流对象。 2、该流的关闭是无效的,因为没有调用过系统资源。 3、按照流的读写思想操作数组中元素。 如: ??// ???使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
十、BufferedInputStream,BufferedOutputStream在使用缓冲输入输出流的时候,推荐用法: ??如:DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream("a/g.txt"))); 十一、InputStramReader,OutputStramWriter转换流转换流功能1:充当字节流与字符流之间的桥梁 //InputStreamReader把字节流输入流转换为字符输入流,从键盘输入是流 ?//OutputStreamWriter把字符流转换为字节流,从纯文本读数据为字符流 ??如:
转换流功能2:字符编码转换 ??如:
十二、写换行符
十三、SequenceInputStream序列流
十四、利用字符编码的原理 解决中文乱码
十五、序列化
十六、总结1、流的作用????流是用来处理数据的。 ????处理数据时,一定要先明确数据源与数据目的地(数据汇)。 ????数据源可以是文件、键盘或者其他流。 ????数据目的地可以是文件、显示器或者其他流。 流只是在帮助数据进行传输,并对传输的数据进行处理,比如过滤处理、转换处理等。 2.、IO流的操作规律????1、明确源和目的。 ???????源:InputStream ??Reader 一定是被读取的。 ???????目的:OutputStream ?Writer 一定是被写入的。 ????2、处理的数据是否是纯文本的数据? ????????是:使用字符流。Reader Writer ????????否:使用字节流。 InputStream OutputStream ? ?3、明确数据所在的设备: ??????源设备: ???????键盘(System.in) ???????硬盘(FileXXX)FileReader FileInputStream ???????内存(数组)ByteArrayInputStream CharArrayReader StringReader ???????网络(Socket) ?????目的设备: ???????显示器(控制台System.out) ???????硬盘(FileXXX)FileWriter FileOutputStream ???????内存(数组)ByteArrayOutputStream CharArrayWriter StringWriter ???????网络(Socket) ? ?4、明确是否需要额外功能: ???????1) 是否需要高效?缓冲区Buffered (字符与字节各两个)。 ???????2) 是否需要转换?转换流 ?InputStreamReader OutputStreamWriter ???????3) 是否操作基本数据类型? DataInputStream ?DataOutputStream ???????4) 是否操作对象(对象序列化)? ObjectInputStream ObjectOutputStream ???????5) 需要对多个源合并吗? SequenceInputStream ???????6) 需要保证数据的表现形式到目的地吗? PrintStream 或 PrintWriter ??????例子:
???? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 16:51:54- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |