在Java中,访问磁盘文件通常使用java.io
包中的类。这些类提供了多种方式来读取和写入文件。以下是一些常用的类及其用法:
1. FileReader 和 FileWriter
解释:
FileReader
用于读取字符文件。FileWriter
用于写入字符文件。
示例代码:
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileReaderWriterExample {
public static void main(String[] args) {
// 写入文件
try (FileWriter writer = new FileWriter("example.txt")) {
writer.write("Hello, World!");
} catch (IOException e) {
e.printStackTrace();
}
// 读取文件
try (FileReader reader = new FileReader("example.txt")) {
int character;
while ((character = reader.read()) != -1) {
System.out.print((char) character);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
2. BufferedReader 和 BufferedWriter
解释:
BufferedReader
用于高效地读取字符输入流。BufferedWriter
用于高效地写入字符输出流。
示例代码:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class BufferedReaderWriterExample {
public static void main(String[] args) {
// 写入文件
try (BufferedWriter writer = new BufferedWriter(new FileWriter("example.txt"))) {
writer.write("Hello, World!");
writer.newLine(); // 写入一个新行
writer.write("This is a buffered writer example.");
} catch (IOException e) {
e.printStackTrace();
}
// 读取文件
try (BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
3. FileInputStream 和 FileOutputStream
解释:
FileInputStream
用于读取字节文件。FileOutputStream
用于写入字节文件。
示例代码:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileStreamExample {
public static void main(String[] args) {
// 写入文件
try (FileOutputStream fos = new FileOutputStream("example.bin")) {
fos.write(65); // 写入字符 'A' 的 ASCII 码值
fos.write(new byte[]{66, 67, 68}); // 写入字符 'B', 'C', 'D' 的 ASCII 码值
} catch (IOException e) {
e.printStackTrace();
}
// 读取文件
try (FileInputStream fis = new FileInputStream("example.bin")) {
int byteData;
while ((byteData = fis.read()) != -1) {
System.out.print((char) byteData); // 将字节数据转换为字符并打印
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
4. RandomAccessFile
解释:
RandomAccessFile
允许对文件进行随机读写操作。它既可以读也可以写,并且可以移动文件指针到任意位置。
示例代码:
import java.io.IOException;
import java.io.RandomAccessFile;
public class RandomAccessFileExample {
public static void main(String[] args) {
try (RandomAccessFile raf = new RandomAccessFile("example.txt", "rw")) {
raf.writeUTF("Hello, World!"); // 写入字符串(以UTF格式)
raf.seek(0); // 移动文件指针到文件开头
String data = raf.readUTF(); // 读取字符串(以UTF格式)
System.out.println(data); // 打印读取的数据
} catch (IOException e) {
e.printStackTrace();
}
}
}
5. NIO (New I/O)
解释:
- Java NIO提供了更高效的文件操作方法,如
FileChannel
、ByteBuffer
等。 - NIO支持非阻塞I/O操作,适用于需要高性能的文件处理场景。
示例代码:
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.nio.file.Paths;
import java.nio.file.Files;
public class NIOExample {
public static void main(String[] args) {
Path path = Paths.get("example.txt");
String content = "Hello, NIO!";
ByteBuffer buffer = ByteBuffer.wrap(content.getBytes());
// 写入文件
try (FileChannel fileChannel = FileChannel.open(path, StandardOpenOption.CREATE, StandardOpenOption.WRITE)) {
fileChannel.write(buffer);
} catch (IOException e) {
e.printStackTrace();
}
// 读取文件
buffer.clear(); // 清空缓冲区以便重新读取数据
try (FileChannel fileChannel = FileChannel.open(path, StandardOpenOption.READ)) {
fileChannel.read(buffer);
buffer.flip(); // 切换缓冲区为读模式
byte[] bytes = new byte[buffer.remaining()];
buffer.get(bytes); // 从缓冲区读取数据到字节数组中
System.out.println(new String(bytes)); // 打印读取的数据
} catch (IOException e) {
e.printStackTrace();
}
}
}
通过以上示例代码,你可以了解如何在Java中使用不同的类和方法来访问和操作磁盘文件。根据具体需求选择合适的类和方法,可以提高程序的性能和可维护性。
标签:文件,java,必看,new,IOException,开发者,io,import,Java From: https://blog.csdn.net/LA1245780/article/details/143598814