java I/O,序列化
迪丽瓦拉
2025-05-31 10:11:09
0

内容导航

本章节介绍Java中的文件操作。文件操作主要指的是使用Java程序进行输入/输出(I/O)操作,Java中所有的操作类都位于java.io包中,在使用时需要导入此包。在整个Java.io包中最重要的就是五个类和一个接口。其中,五个类指File, OutputStream, InputStream, Writer, Reader,一个接口指的是Serializable,掌握了这些就掌握了I/O操作的核心。

  1. File类

File类是java.io包下代表操作与平台无关的文件和目录的类,也就是说,如果需要在程序中操作文件或目录,就可以通过File类实现对文件或目录的新建,删除,重命名等操作。

操作文件和目录

File类的构造方法定义如下:

public File(String pathName)

其中,pathName指文件路径。因此,在创建File对象的时候必须设置文件路径。列如:操作C盘下的test.txt文件,创建File对象的语句如下。

File file=new File("C:/test.txt");

提示:

  1. 在Windows操作系统中,文件路径名中的路径分隔符可以使用正斜杠“/”,如"C:/test.txt",也可以使用反斜杠“\”,但必须写成“\\",其中第一个"\"表示转义符,如"C:\\test.txt".

  1. pathName可以是相对路径也可以是绝对路径。绝对路径是以根目录开头的完整路径。相对路径一般是以项目文件夹为参照物。项目文件下一般有3个文件夹(.idea, out, src),和1个IML文件。

File类的常用方法

方法

描述

boolean createNewFile()

创建新文件

boolean delete()

删除文件

boolean exists()

判断文件是否存在

boolean isFile()

判断是否是文件

boolean isDirectory()

判断是否是目录

long length()

返回文件长度,单位为字节;若文件不存在,则返回0L

String getPath()

返回文件名对应的路径

String getAbsolutePath()

返回此对象表示的文件的绝对路径

提示:如需完成对File类的更多操作,则可随时查阅API帮助文档。对文件操作时有些方法必须使用异常处理。

  1. I/O流概述

File类无法实现对文件内容的操作,也就是无法实现对文件的读写。而Java中的I/O流能够实现数据的输入和输出,是实现文件读写的基础。

提示:如何解释I/O呢?

I即input,指读取操作;O即output,指写入操作。

流,是指一连串流动的字符,是以先进先出的方式发送和接收数据的通道。既然是流,必然是有源端和目的端,它门可以是Internet上的某个统一资源定位符。所谓I/O流就是实现数据输入和输出的流,在I/O流基础上,可以实现对文件的读写操作。Java把所有流类型都封装到java.io包中,用以实现I/O操作。


Java的读取主要以InputStream和Reader作为基类,而写入则主要以OutputStream和Writer作为基类。它门都是一些抽象类,无法直接实例化对象。

按处理单元划分:字节流和字符流

Java中的流可以分为字节流和字符流,他们的区别在于操作的数据单元不同。

  • 字节流:以8位字节为操作数据单元的流,可以于操作二进制数据(如操作图片文件)。

  • 字符流:以16位的字符为操作数据单元的流,可用于操作文本数据。

通俗地理解,可以把I/O流看做一个水管,这个水管中依次排列着许多水滴,每滴水滴就是一个处理单元,即一个字节或字符。在字节流中每滴水滴是一个字节,在字符流中每滴水滴是一个字符。

字节流

java.io包中的流按存储单元分类主要有字节流和字符流两大类,两类都具有输入/输出操作。它门各自的基类如图所示,这些基类均为抽象类。

字节输出流基类:OutputStream

该类为抽象类,如果需要操作文件,则使用其子类FileOutputStream实例化。

OutputStream类中的主要操作方法

方法

描述

void close()

关闭输出流

void flush()

刷新缓冲区

void write(byte[] b)

将每个byte数组写入数据流

void write(byte[] b,int off,int len)

将每个指定范围的byte数组写入数据流

void write(int b)

将一个字节数据写入数据流

字节输出流FileOutputStream类

在开发中,通常使用OutputStream类的FileOutputStream子类向文本文件写入数据。

FileOutputStream类常用的构造方法

方法

描述

FileOutputStream(File file)

用于创建向指定File对象写数据的文件输出流。file:指定目标文件的对象

FileOutputStream(String name)

用于创建向指定路径的文件写数据的文件输出流。name:指定目标文件的路径字符串

FileOutputStream(String name,boolean append)

创建一个向指定路径的文件写入数据的文件输出流。name:指定目标文件的路径字符串。append:表示是否在文件末尾追加数据,若为true则表示可以在文件末尾追加数据

字节输入流基流:InputStream类

InputStream类定义的主要方法

方法

描述

int read()

int read(byte[] b)

int read

字节输入流:FileInputStream类

字符流

缓冲流

数据操作流

本章总结

  1. File类用来访问文件和目录。

  1. 流,是指一连串流动的字符,是以先进先出的方式发送和接收数据的通道。Java中的I/O流正是实现文件读写的基础,它可以方便地实现数据的输入和输出。

  1. 流具有明确的方向性,按照流的流向来分,其可以分为输入流和输出流。

  1. 按照处理单元划分,java中的流可以分为字节流和字符流。

  1. 按照流的角色划分,Java中的流可以为节点流和处理流。

  1. FileInputStream和FileOutputStream实现以字节流的方式读写文本文件。

  1. FileWriter类和FileReader类实现以字符流的方式读写文本文件。

  1. BufferedWriter和BufferedReader类为字符缓冲流,具有缓冲区,执行效率更高。

  1. 序列化就是将对象的状态存储到特定的存储介质中的过程,也就是将对象状态转换为可保持或可传输格式的过程。反序列化是将存储介质中的数据重新构造为对象的过程。

  1. 序列化和反序列化需使用对象输入/输出流流ObjectInputStream和ObjectOutputStream。


努力造就实力,态度决定高度。

相关内容