Java在文件处理方面提供了丰富的API,涵盖了从基本的文件读写操作到复杂的数据处理需求。本文将详细解析Java文件读写的各个方面,并提供实战示例,帮助您在实际项目中高效处理文件数据。
一、Java文件读写基础
Java提供了多个类来处理文件读写,包括 FileReader、FileWriter、BufferedReader、BufferedWriter、FileInputStream和 FileOutputStream等。下面是这些类的基本用法。
1.1 文件读取
使用 FileReader和 BufferedReader读取文件
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class FileReadExample {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("example.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 FileInputStream读取文件
import java.io.FileInputStream;
import java.io.IOException;
public class FileInputStreamExample {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("example.txt")) {
int content;
while ((content = fis.read()) != -1) {
System.out.print((char) content);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
1.2 文件写入
使用 FileWriter和 BufferedWriter写入文件
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class FileWriteExample {
public static void main(String[] args) {
try (BufferedWriter bw = new BufferedWriter(new FileWriter("example.txt"))) {
bw.write("Hello, world!");
bw.newLine();
bw.write("Java file writing example.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 FileOutputStream写入文件
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamExample {
public static void main(String[] args) {
try (FileOutputStream fos = new FileOutputStream("example.txt")) {
String content = "Hello, world!";
fos.write(content.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
}
二、高效文件读写
为了提高文件读写的效率,可以使用缓冲流。缓冲流通过减少实际读写操作的次数来提高性能。
2.1 使用 BufferedReader和 BufferedWriter
import java.io.*;
public class BufferedReadWriteExample {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("example.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("example_copy.txt"))) {
String line;
while ((line = br.readLine()) != null) {
bw.write(line);
bw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
三、使用NIO进行文件读写
Java NIO(New I/O)提供了一种更高效的文件读写方式。NIO中的 Files类提供了许多静态方法来简化文件操作。
3.1 使用 Files读取文件
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
public class NIOFileReadExample {
public static void main(String[] args) {
try {
List
for (String line : lines) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
3.2 使用 Files写入文件
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.List;
public class NIOFileWriteExample {
public static void main(String[] args) {
List
try {
Files.write(Paths.get("example.txt"), lines);
} catch (IOException e) {
e.printStackTrace();
}
}
}
四、文件复制与移动
NIO中的 Files类还提供了文件复制和移动的功能。
4.1 文件复制
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class FileCopyExample {
public static void main(String[] args) {
try {
Files.copy(Paths.get("example.txt"), Paths.get("example_copy.txt"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
4.2 文件移动
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class FileMoveExample {
public static void main(String[] args) {
try {
Files.move(Paths.get("example.txt"), Paths.get("example_moved.txt"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
五、文件删除
NIO中的 Files类也提供了删除文件的方法。
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class FileDeleteExample {
public static void main(String[] args) {
try {
Files.delete(Paths.get("example.txt"));
} catch (IOException e) {
e.printStackTrace();
}
}
}