Java 读写文件攻略
在 Java 中,提供了多种读写文件的方法,本文将介绍最常用的几种方法,以及两条示例。
使用 FileInputStream 和 FileOutputStream
Java 的 FileInputStream
和 FileOutputStream
分别表示字节流的输入输出流,可以用于读写二进制文件。以下是使用这种方法读写文件的示例代码:
import java.io.*;
public class ReadWriteFileDemo {
public static void main(String[] args) {
try {
// 读文件
FileInputStream inputStream =
new FileInputStream("input.txt");
int data = inputStream.read();
while(data != -1) {
// do something with data...
System.out.println(data);
data = inputStream.read();
}
inputStream.close();
// 写文件
FileOutputStream outputStream =
new FileOutputStream("output.txt");
String str = "Hello, world!";
byte[] strToBytes = str.getBytes();
outputStream.write(strToBytes);
outputStream.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
上述代码中,FileInputStream
和 FileOutputStream
都需要传入一个文件的路径作为参数来创建。读文件的步骤是:打开输入流 -> 读取数据 -> 关闭输入流;写文件的步骤是:打开输出流 -> 写入数据 -> 关闭输出流。
使用 FileReader 和 FileWriter
Java 的 FileReader
和 FileWriter
分别表示字符流的输入输出流,可以用于读写文本文件。以下是使用这种方法读写文件的示例代码:
import java.io.*;
public class ReadWriteFileDemo {
public static void main(String[] args) {
try {
// 读文件
FileReader reader = new FileReader("input.txt");
int data = reader.read();
while(data != -1) {
// do something with data...
System.out.print((char) data);
data = reader.read();
}
reader.close();
// 写文件
FileWriter writer = new FileWriter("output.txt");
writer.write("Hello, world!");
writer.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
上述代码中,FileReader
和 FileWriter
都需要传入一个文件的路径作为参数来创建。读文件和写文件的步骤与字节流的方法类似。
示例一:读取文件内容到字符串
以下是一个将文件内容读取到字符串中的示例代码:
import java.io.*;
public class ReadFileToStringDemo {
public static String readFileToString(String filePath) {
StringBuilder result = new StringBuilder();
try {
BufferedReader reader = new BufferedReader(new FileReader(filePath));
String line = reader.readLine();
while (line != null) {
result.append(line).append("\n");
line = reader.readLine();
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
return result.toString();
}
public static void main(String[] args) {
String content = readFileToString("input.txt");
System.out.println(content);
}
}
上述代码中,我们使用了 BufferedReader
读取文件的内容,并将每行文本拼接成一个字符串返回。
示例二:使用 NIO 读写文件
以下是使用 NIO 读写文件的示例代码:
import java.io.*;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class NIOReadWriteDemo {
public static void readFile(String fileName) throws IOException {
RandomAccessFile file = new RandomAccessFile(fileName, "rw");
FileChannel channel = file.getChannel();
ByteBuffer buffer = ByteBuffer.allocate(1024);
while (channel.read(buffer) > 0) {
buffer.flip();
while (buffer.hasRemaining()) {
System.out.print((char) buffer.get());
}
buffer.clear();
}
channel.close();
file.close();
}
public static void writeFile(String fileName, String content) throws IOException {
RandomAccessFile file = new RandomAccessFile(fileName, "rw");
FileChannel channel = file.getChannel();
byte[] bytes = content.getBytes();
ByteBuffer buffer = ByteBuffer.allocate(bytes.length);
buffer.put(bytes);
buffer.flip();
channel.write(buffer);
channel.close();
file.close();
}
public static void main(String[] args) {
try {
readFile("input.txt");
writeFile("output.txt", "Hello, world!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
在 NIO 中,我们使用 FileChannel
和 ByteBuffer
来进行文件的读写操作。在读文件时,我们首先打开文件通道,然后创建一个缓冲区来保存读取到的字节,每次从通道中读取数据后,要记得重置缓冲区。
在写文件时,我们先将要写入的字符串转换为字节数组,然后创建一个缓冲区来保存这些字节。写入过程与读取过程类似。
使用 NIO 的好处是,它可以处理大文件并且速度比较快。因为它使用内存映射文件来读写数据,而且它的 API 比较简单易用。但是,使用 NIO 读写文件比较底层,需要对 Java I/O 有一定的了解。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java 读写文件[多种方法] - Python技术站