时间:2021-05-19
Java语言的输入输出功能是十分强大而灵活的,对于数据的输入和输出操作以“流”(stream)的方式进行。J2SDK提供了各种各样的“流”类,用以获取不同种类的数据,定义在包java.io中。程序中通过标准的方法输入或输出数据。
Java中的流可以从不同的角度进行分类:
按照流的方向不同:分为输入流和输出流。
按照处理数据单位的不同:分为字节流(8位)和字符流(16位)。
按照功能不同:分为节点流和处理流。
节点流:是可以从一个特定的数据源(节点)读写数据的流(例如文件,内存)。就像是一条单一的管子接到水龙头上开始放水。
处理流:是“连接”在已经存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。就像在已经接了一条管子(节点流)的基础上,又套上几个更粗,具有特殊功能的管子(处理流)对流出的水进一步的处理。
J2SDK所提供的所有位于包java.io内的流类型都分别继承以下四种抽象流类型。
四种基本流InputStream,OutputStream,Reader,Writer又分别有更具体的子类,分为文件流,缓冲流,数据流,转换流,Print流,Object流等,都分别有特定的功能或用来操作特定的数据。其中深颜色的代表节点流,浅颜色的代表处理流。
这里通过节点流和处理流总结一下流的具体用法。
节点流的分类:
节点流分别对File(文件),Array(内存中的一个数组),String(字符串),Pipe(管道)进行处理。
处理流的分类:
常用的处理流有:缓冲流,转换流,数据流,对象流,打印流。
缓冲流:要套接在相应的字节流之上,对读写的数据提供了缓冲功能,提高了读写的效率,同时也增加了一些更方便方法。
缓冲流的作用就像一个桶,原本的字节流是个水管,水管直接连到目的地,加了缓冲流之后,就是在水管下接了一个桶,等桶接满水后再倒入目的地。起到了缓冲的作用。这样就可以一次读到更多的数据,避免了频繁的读写硬盘。由于带了缓冲功能,所以就写数据的时候需要使用flush方法。
转换流:用与字节数据到字符数据之间的转化。InputStreamReader需要和InputStream套接,OutputStreamWriter需要和outputStream套接。
数据流:DataInputStream 和DataOutputStream 提供将基础数据类型写入到文件中,或者读取出来,这个流的用处还是很大的,如果没有这种流的话,有一个long,本身只占8个字节,如果我要写入到文件,需要转成字符串,然后在转成字符数组,那空间会占用很多,但是有了这种流之后就很方便了,直接将这8个字节写到文件就可以了,既节约了内存空间也使程序写起来更加方便简单。但是读取的时候需要注意了,根据读取的数据类型,指针会往下移,所以你读的顺序必须要和写的顺序一致才能完成你正确的需求。否则就相当与把数据拆分了。
打印流:java.io中专门提供用于打印的流,这类流在写入的时候有自动flush的功能,所以不需要每打印一个东西都flush一次。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
摘要:本文介绍了Java8中流的几个特性,以告诫开发者流并不是高性能的代名词,需谨慎使用流。以下是译文。流(Stream)是Java8为了实现最佳性能而引入的一
java的Console类的使用方法及实例JDK6中提供了java.io.Console类专用来访问基于字符的控制台设备。如果你的Java程序要与Windows
之前写了一篇文章:Java网络IO编程总结(BIO、NIO、AIO均含完整实例代码),介绍了如何使用Java原生IO支持进行网络编程,本文介绍一种更为简单的方式
Java中IO流字节流实例详解IO流(输入流、输出流),又分为字节流、字符流。 流是磁盘或其它外围设备中存储的数据的源点或终点。 输入流:程序从输入流读取数
Linux中firewall的使用方法总结firewall简单使用1,显示所有配置firewall-cmd--list-all-zones2,重新加载配置fir