前言:在计算机中,通常使用各种各样的文件保存数据,如何在Java程序中操作这些文件呢?java.io包提供了一些接口和类,可以对文件进行基本的操作。File类可以操作文件的属性,I/O流可以读写文件(包括文本文件、二进制文件、对象)

一、File类操作文件和目录

使用步骤:

1、引入File类:import java.io.File;

2、构建一个文件对象:File f=new File(“test.txt");

3、利用File方法访问文件或目录属性:

f.exists() //判断文件或目录是否存在

f.isFile() //判断是否是文件

f.mkdir() //创建一个目录,它的路径名由当前file对象指定

f.mkdirs() //创建包括父目录的目录

java 得到file类型 java读取file_二进制文件

二、认识Java的流

上面说到File类能对文件或目录的属性进行操作,但是File类不能访问文件的内容,读文件是指把文件中的数据读取到内存中,写文件是把内存中的数据写到文件中,那么通过什么读写文件呢?答案是流。流是指一串流动的字符,是以先进先出的方式发送和接收的通道。流分为输入流和输出流,输入和输出是相对内存说的。

Java的输出流主要由OutputStream和Writer作为基类,输入流主要由InputStream和Reader作为基类。

流的分类

java 得到file类型 java读取file_输入流_02

三、读写文本文件

一、使用字节流读写文本文件

1、使用FileInputStream读文本文件

1、int read():一个字节一个字节读。返回的是该字节的整数表示形式,如果读到了输入流的末流,返回-1;
2、int read(byte[] b):从输入流读取若干字节,把这些字节保存到数组b中,返回的是读取的字节数,如果读到了输入流的末流,返回-1;
3、int read(byte[] b,int off ,int len):从输入流读取若干字节,把这些字节保存到数组b中,off指的是字节数组中开始保存数据的起始下标,len指读取的字节数目。返回的是实际读取的字节数,如果读到了输入流的末流,返回-1。
4、void close();
5、int available():可以从输入流中读取的字节数目。

java 得到file类型 java读取file_文本文件_03


java 得到file类型 java读取file_文本文件_04


java 得到file类型 java读取file_输入流_05


java 得到file类型 java读取file_输入流_06

FileInputStream读文件的流程:
1、FileInputStream对象和String结果对象声明
2、创建FileInputStream对象(文件路径或File对象)
3、读单字节或整个读到byte数组中
4、转成字符串
5、关闭FileInputStream流
6、返回结果

2、使用FileOutputStream写文本文件

java 得到file类型 java读取file_文本文件_07

FileOutputStream写文件的流程:
1、File对象装载文件路径
2、判断文件父级目录是否存在,不存在则创建
3、声明FileOutputStream对象
4、创建FileOutputStream对象
5、把要写的字符串转成byte数组,并写入输入流
6、关闭FileOutputStream流

二、使用字符流读写文本文件

1、使用BufferedReader和FileReader读文本文件

java 得到file类型 java读取file_输入流_08


java 得到file类型 java读取file_java 得到file类型_09

2、使用BufferedWriter和FileWriter读文本文件

java 得到file类型 java读取file_java 得到file类型_10

四、读写二进制文件

利用DataIntputStream类读二进制文件,其实与利用FileInputStream类读文件极其相似,也要用到FileInputStream类关联二进制文件,写同理。

java 得到file类型 java读取file_二进制文件_11

五、序列化保存对象信息、反序列化获取对象信息

相关类要实现Serializable接口!!!

java 得到file类型 java读取file_二进制文件_12


java 得到file类型 java读取file_java 得到file类型_13

写对象
1、要求对象的类型必须是可序列化类型(实现了Serializable接口)
2、现有写入的目标流
3、创建对象流,把输出流装入
4、调用对象流的writeObject()把对象装入
5、关闭资源
读对象:
1、现有输入的源文件流
2、创建对象输入流,装入文件输入流
3、调用对象流的readObject()读取到对象
4、关闭资源

拓展:中文乱码问题如何解决?

方式一:手动设置。手动更改文件格式或者程序环境编码格式。(不建议用,弊端多)。

方式二:通过流读取时设置编码格式。使用Reader子类InputStreamReader。

java 得到file类型 java读取file_java 得到file类型_14