Java文件IO操作函数大全
Java文件I/O操作函数大全主要介绍 Java 编程中有关文件读写操作的常用类、方法和应用。这是 Java 语言中非常基础和重要的知识点。本文将重点介绍 Java 文件 I/O 的基础概念、 File 类、 InputStream 和 OutputStream 类、 Reader 和 Writer 类等常用类、以及它们的方法的具体用法和示例。
1. 概述
Java 的 I/O 机制主要用于读写文件和网络操作。本篇文章我们重点讲解 Java 文件 I/O 操作,常见的文件 I/O 操作有:读取文件或文件夹、写入文件、复制文件、删除文件、移动文件等。
Java 文件 I/O 操作主要是靠一些类和接口来实现的,常见的类包括 java.io 包中的 File 类、InputStream 和 OutputStream 类、Reader 和 Writer 类等,这些类提供了对文件的读写操作以及流的输入输出等功能。
2. File 类
Java 中 File 类表示文件或目录,可以根据路径或者抽象路径名来表示不同操作系统下的文件。File 类提供了一些常用的方法,如创建文件、删除文件、读取文件属性、判断文件是否存在等等。下面我们来介绍一下常见 File 类的 API。
2.1 创建 File 对象
- File(String pathname):通过指定文件路径来创建 File 对象。
- File(String parent, String child):通过指定父路径和子路径来创建 File 对象。
- File(File parent, String child):通过指定父路径和子路径来创建 File 对象。
- File(java.net.URI uri):通过指定 URI 来创建 File 对象。
示例:
File file1 = new File("D:\\test\\file.txt");
File file2 = new File("D:\\test","file.txt");
File file3 = new File("D:\\test");
File file4 = new File(file3,"file.txt");
2.2 File 对象属性
- getName():获取文件或文件夹名称。
- getParent():获取文件或文件夹的父级路径。
- getPath():获取文件或文件夹的路径。
- isAbsolute():判断文件或文件夹是不是绝对路径。
- length():获取文件长度。
- lastModified():获取文件最后修改时间,返回值为毫秒数。
- delete():删除当前路径对应的文件或目录。
示例:
File file = new File("D:\\test\\file.txt");
System.out.println(file.getName()); // 输出:file.txt
System.out.println(file.getParent()); // 输出:D:\test
System.out.println(file.getPath()); // 输出:D:\test\file.txt
System.out.println(file.isAbsolute()); // 输出:true
System.out.println(file.length()); // 输出:0
System.out.println(file.lastModified()); // 输出:1617716694554
file.delete();
2.3 文件目录操作
- mkdir():创建当前目录。
- mkdirs():创建多级目录。
示例:
File file = new File("D:\\test");
file.mkdir();
2.4 文件读取
- exists():判断文件是否存在。
- canRead():判断文件是否可读。
- canWrite():判断文件是否可写。
- canExecute():判断文件是否可执行。
示例:
File file = new File("D:\\test\\file.txt");
System.out.println(file.exists()); // 输出:false
System.out.println(file.canRead()); // 输出:false
System.out.println(file.canWrite()); // 输出:false
System.out.println(file.canExecute()); // 输出:false
3. InputStream 和 OutputStream
InputStream 和 OutputStream 是 Java 中用于读写二级制数据的基类,它们分别是字节输入流和字节输出流,所有的 Java I/O 类都是从这里继承而来的。InputStream 和 OutputStream 都是抽象类,不能直接被实例化,需要通过具体的子类来创建,常见的子类包括 FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream 等。
3.1 FileInputStream
FileInputStream 用于读取文件的字节流,通常用来读取二进制文件(如图片、音视频、doc、PDF等等)。 FileInputStream 的构造方法可以接收一个文件名或者 File 对象作为参数,这个参数就是要读取的文件名或文件对象。这里给出读取文件流的写法模板:
public static void main(String[] args) {
InputStream inputStream = null;
try {
// 构建 File 实例
File file = new File("D:\\test\\file.txt");
// 构建 FileInputStream 实例
inputStream = new FileInputStream(file);
// 读取数据
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) != -1) {
System.out.println(new String(buffer, 0, length, "UTF-8"));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (inputStream != null) {
inputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
3.2 FileOutputStream
FileOutputStream 用于写入文件的字节流,通常用来写入二进制文件(如图片、音视频、doc、PDF等等)。 FileOutputStream 的构造方法可以接收一个文件名或者 File 对象作为参数,这个参数就是要写入的文件名或文件对象。这里给出写入文件流的写法模板:
public static void main(String[] args) {
OutputStream outputStream = null;
try {
// 构建 File 实例
File file = new File("D:\\test\\file.txt");
// 构建 FileOutputStream 实例
outputStream = new FileOutputStream(file);
// 写入数据
byte[] bytes = "hello world".getBytes();
outputStream.write(bytes);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (outputStream != null) {
outputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
3.3 BufferedInputStream 和 BufferedOutputStream
BufferedInputStream 和 BufferedOutputStream 是用于对 FileInputStream 和 FileOutputStream 进行缓存的类,它们的构造函数都需要传入一个 FileInputStream 或 FileOutputStream 对象,产生了新的 FileInputStream 或 FileOutputStream 对象,使流的读写更加高效,常用于文件下载上传、复制等需求。
public static void main(String[] args) {
InputStream inputStream = null;
OutputStream outputStream = null;
try {
// 构建 File 实例
File srcFile = new File("D:\\test\\file.txt");
File dstFile = new File("D:\\test\\file_copy.txt");
// 构建 BufferedInputStream 实例
inputStream = new BufferedInputStream(new FileInputStream(srcFile));
// 构建 BufferedOutputStream 实例
outputStream = new BufferedOutputStream(new FileOutputStream(dstFile));
// 读取数据并写入到目标文件
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, length);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (inputStream != null) {
inputStream.close();
}
if (outputStream != null) {
outputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
4. Reader 和 Writer
Java 中的 Reader 和 Writer 类是字符输入输出流,它们用于处理字符流,一般用于文本文件。常用子类有 FileReader 和 FileWriter,同样也可以使用 BufferedReader 和 BufferedWriter 进行缓存读写,常用于文件下载上传、复制等需求。
4.1 FileReader 和 FileWriter
FileWriter 是一个写入字符流的类,用于写入字符数据流到文件中,读取数据的方式与 FileInputStream 类似,通常用于写入文本文件,例如写入一段文字,其中缓存大小 name 字段的变量定义在上文中的模板中命名为 blockSize。 FileReader 是一个读取字符流的类,用于读取通过 FileWriter 写入的文件。这里给出读取文件流的写法模板:
`java
public static void main(String[] args) {
Reader reader = null;
try {
// 构建 File 实例
File file = new File("
