File类:IO包中唯一代表磁盘文件本身信息的类,而不是文件中的内容。该类定义了一些与平台无关的方法来
操纵文件,创建、删除等。其中java中的目录当成一种特殊的文件使用,list方法可以返回目录中所有的子目录和文件名。
RandomAccessFile类:该类提供了众多的文件访问方法,并且支持“随机访问”方式。该类构造器中有个文件指示器。该类在
随机读写等长记录格式的文件时有很大优势,使用流的方式读取文件内容,必须按照顺序一个字节一个字节读取等长记录要求每条记录信息一样。但是该类仅限于操
作文件,不能访问其他IO设备,如网络,内存映像等。
两种构造方法,new RandomAccessFile(f,"rw");//读写方式
new RandomAccessFile(f,"r");//只读方式,读和写共享一个文件指示器。
各种节点流类:
流是字节序列的抽象概念,文件是数据的静态存储形式,而流是指数据传输时的形态。
流分成2类:
输入/输出都是站在程序运行所在的内存的角度来看
输入流:
输出流:
还有一种分类:
字节流: 字节流每次处理的数据单元是一个8位的字节。
字符流: 在UNICODE字符集里,一个字符占16位。
字符流每次处理的数据源单元是一个字符。
输入流“取水”的三个方法
read() -> 返回实际所取的一滴“水”。
read(buff) -> 返回实际所取的水滴的数量。
输出流“输出水”的三个方法
write(int) -> 将单独的一滴“水”输出到输出流
write(buff) -> 将buff中所有“水滴”输出到输出流。
write(buff , off , length) -> 将buff中从off开始,长度为length的“水滴”输出到输出流。
所有IO流,使用完后都应该要关闭!
为什么要关闭呢?
因为创建io流对象时,操作系统会产生流资源,垃圾回收只会管理类实例对象,不会管理系统产生的流资源。
io中的缓冲区:io读写文件的时候,往往都不是直接将数据从IO设备读或者直接写入IO设备中,写时一般是将其填入缓冲区,待缓冲区满后然后
将数据写入IO设备,如果想将数据写入IO设备,可以使用flush方法,但是该方法只有那些支持缓冲区的类才有。使用缓冲区可以提高读写的效率。
以Stream结尾的都是字节流,以Writer/Reader结尾的是字符流
+-----------------------+------------------------+---------------------+-----------------------+
| InputStream | OutputStream | Reader | Writer | 抽象基类
+-----------------------+------------------------+---------------------+-----------------------+
| FileInputStream | FileOutputStream | FileReader | FileWriter | 读写文件
+-----------------------+------------------------+---------------------+-----------------------+
| ByteArrayInputStream | ByteArrayOutputStream | CharArrayReader | CharArrayWriter | 读写数组
+-----------------------+------------------------+---------------------+-----------------------+
|
| | StringReader |
StringWriter | 读写字符串
+-----------------------+------------------------+---------------------+-----------------------+
| PipedInputStream | PipedOutputStream | PipedReader | PipedWriter | 管道流
+-----------------------+------------------------+---------------------+-----------------------+
| FilterInputStream | FilterOutputStream | FilterReader | FilterWriter | 处理流的抽象基类
+-----------------------+------------------------+---------------------+-----------------------+
| BufferedInputStream | BufferedOutputStream | BufferedReader | BufferedWriter | 增加缓冲功能
+-----------------------+------------------------+---------------------+-----------------------+
|
| PrintStream
| | PrintWriter | 打印流
+-----------------------+------------------------+---------------------+-----------------------+
| | | InputStreamReader | OutputStreamWriter | 转换流(将字节流转换为字符流)
+-----------------------+------------------------+---------------------+-----------------------+
流还有一种分类方法,按是否与物理节点关联来分类。
节点流:直接和一个物理节点关联的。节点流的坏处是用起来不太方便。
处理流(包装流):它是建立在已有的流的基础之上!用起来比较方便。
分享到:
相关推荐
有关Java输入输出流的总结有关Java输入输出流的总结有关Java输入输出流的总结
Java IO总结 Java IO是Java中对文件的操作方式,以流的方式进行。流是Java内存中的一组有序数据序列。Java将数据从源(文件、内存、键盘、网络)读入到内存中,形成了流,然后将这些流还可以写到另外的目的地(文件...
Java io流的总结
JavaIO总结[借鉴].pdf
javaIO总结,帮助初学者了解及掌握IO,以及java高级的一些基础知识
java基础中的IO流部分的总结,有详细的知识点描述,思维导图的整体框架
Java IO系统主要包括两个包:`java.io`和`java.nio`(New IO),其中`java.io`提供了一系列基于流的I/O操作接口与实现类,而`java.nio`则提供了更高效的数据访问方式,如通道和缓冲区等。 Java IO系统的设计原则之...
JAVA_IO流学习总结
Java IO流总结 Java IO流是Java语言中最基本和最重要的输入/输出机制,负责将数据从外部世界输入到Java应用程序中或将数据从Java应用程序输出到外部世界。IO流可以分为两大类:字节流和字符流。 1. 节点流:离数据...
这篇详细的总结将围绕Java IO体系结构、核心类、流的概念、缓冲区、转换流、字符集、文件操作、对象序列化以及NIO(非阻塞IO)等多个方面进行展开。 一、Java IO体系结构 Java IO体系是Java平台中用于处理数据输入...
这是别人总结的很有实用价值的javaIO流教程。
下面是对Java IO流的详细总结: 1. 流的概念: 流是一种抽象的数据传输方式,可以将数据从一个地方传输到另一个地方。Java中的流分为输入流和输出流,分别用于读取和写入数据。流按照处理数据的不同类型,又可以...
总结来说,Java NIO提供了一种更高效、更适合处理并发的IO模型,尤其在服务器端开发中,如高并发的网络应用,NIO的优势更为明显。理解和掌握Java IO与NIO的使用,对于提升Java应用程序的性能和可扩展性至关重要。
总结来说,Java IO流是一个庞大的体系,覆盖了从基础的文件操作到复杂的网络通信,理解并熟练掌握这一部分将极大地提升Java开发者的技能。通过学习和实践,开发者可以灵活地处理各种数据输入输出场景,为应用程序...
#### 五、Java IO总结 Java IO是一个强大的框架,它支持各种不同的流类型,包括字节流和字符流。通过使用装饰模式,开发人员可以轻松地扩展流的功能,而无需修改原始流的实现。这种灵活性使得Java IO成为处理文件和...
在这个大总结中,我们将深入探讨Java IO流的基本概念、分类、常用类以及实践应用。 1. **基本概念** - **流(Stream)**:在Java中,流是一个抽象的概念,代表数据的有序序列。它可以是字节流或字符流,流向可以是...
这篇博客“Java学习之IO总结及mina和netty”探讨了Java IO的基础知识,并深入到两个高级网络通信框架——Mina和Netty。Mina和Netty都是基于NIO(非阻塞IO)的高性能网络应用框架,它们简化了复杂网络编程的实现。 *...