跳至主要內容
聊聊 Java NIO 中的Paths 和 Files

12.4 Paths 和 Files

Paths 和 Files 在 Java 7 的时候引入,作为对 java.io.File的补充和改进。

Paths 类

Paths 类主要用于操作文件和目录路径。它提供了一些静态方法,用于创建java.nio.file.Path实例,代表文件系统中的路径。


沉默王二大约 9 分钟Java核心Java IO
Java Serializable 接口:明明就一个空的接口嘛

7.9 序列接口Serializable

对于 Java 的序列化,我之前一直停留在最浅层次的认知上——把那个要序列化的类实现 Serializbale 接口就可以了嘛。

我似乎不愿意做更深入的研究,因为会用就行了嘛。

但随着时间的推移,见到 Serializbale 的次数越来越多,我便对它产生了浓厚的兴趣。是时候花点时间研究研究了。


沉默王二大约 14 分钟Java核心Java IO
Java 打印流:PrintStream 和 PrintWriter

7.7 打印流

在我的职业生涯中, System.out.println() 的使用频率恐怕不亚于 main 方法的使用频率。其中 System.out 返回的正是打印流 PrintStream

除此之外,还有它还有一个孪生兄弟,PrintWriter。PrintStream 是 OutputStream 的子类,PrintWriter 是 Writer 的子类,也就是说,一个字节流,一个是字符流


沉默王二大约 6 分钟Java核心Java IO
Java 序列流:Java 对象的序列化和反序列化

7.8 序列流(序列化和反序列化)

Java 的序列流(ObjectInputStream 和 ObjectOutputStream)是一种可以将 Java 对象序列化和反序列化的流。

序列化是指将一个对象转换为一个字节序列(包含对象的数据对象的类型对象中存储的属性等信息),以便在网络上传输或保存到文件中,或者在程序之间传递。在 Java 中,序列化通过实现 java.io.Serializable 接口来实现,只有实现了 Serializable 接口的对象才能被序列化。


沉默王二大约 6 分钟Java核心Java IO
深入探讨 Java transient 关键字:掌控序列化时的字段选择权

7.10 transient关键字

害,小二最熟的是 Java,但很多 Java 基础知识都不知道,比如 transient 关键字以前就没用到过,所以不知道它的作用是什么,今天去招银面试的时候,面试官问到了这个:说说 Java 的 transient 关键字吧,结果小二直接懵逼了。

下面是他自己面试凉了以后回去做的总结,分享出来,大家一起涨下姿势~~~好了,废话不多说,下面开始:

01、transient 的作用及使用方法

我们知道,一个对象只要实现了 Serilizable 接口,它就可以被序列化


沉默王二大约 6 分钟Java核心Java IO
Java 缓冲流:Java IO 的读写效率有了质的飞升

7.5 缓冲流

Java 的缓冲流是对字节流和字符流的一种封装,通过在内存中开辟缓冲区来提高 I/O 操作的效率。Java 通过 BufferedInputStream 和 BufferedOutputStream 来实现字节流的缓冲,通过 BufferedReader 和 BufferedWriter 来实现字符流的缓冲。

缓冲流的工作原理是将数据先写入缓冲区中,当缓冲区满时再一次性写入文件或输出流,或者当缓冲区为空时一次性从文件或输入流中读取一定量的数据。这样可以减少系统的 I/O 操作次数,提高系统的 I/O 效率,从而提高程序的运行效率。


沉默王二大约 14 分钟Java核心Java IO
Java 字符流:Reader和Writer的故事

7.4 字符流

字符流 Reader 和 Writer 的故事要从它们的类关系图开始,来看图。

字符流是一种用于读取和写入字符数据的输入输出流。与字节流不同,字符流以字符为单位读取和写入数据,而不是以字节为单位。常用来处理文本信息。


沉默王二大约 12 分钟Java核心Java IO
Java 字节流:Java IO 的基石

7.3 字节流

我们必须得明确一点,一切文件(文本、视频、图片)的数据都是以二进制的形式存储的,传输时也是。所以,字节流可以传输任意类型的文件数据。

字节输出流(OutputStream)

java.io.OutputStream字节输出流超类(父类),我们来看一下它定义的一些共性方法:

1、 close() :关闭此输出流并释放与此流相关联的系统资源。

2、 flush() :刷新此输出流并强制缓冲区的字节被写入到目的地。


沉默王二大约 11 分钟Java核心Java IO
Java File:IO 流的起点与终点

7.2 文件流

在 IO 操作中,文件的操作相对来说是比较复杂的,但也是使用频率最高的部分,我们几乎所有的项目中几乎都躺着一个叫做 FileUtil 或者 FileUtils 的工具类。

java.io.File 类是专门对文件进行操作的类,注意只能对文件本身进行操作,不能对文件内容进行操作,想要操作内容,必须借助输入输出流。

File 类是文件和目录的抽象表示,主要用于文件和目录的创建、查找和删除等操作。

怎么理解上面两句话?其实很简单!

第一句是说 File 跟流无关,File 类不能对文件进行读和写,也就是输入和输出!


沉默王二大约 14 分钟Java核心Java IO
2