设计一个java程序,实现分别使用字节和字符输入流读取“C:\Windows\System32\drivers\etc”目录下hosts文本文件内容,并将其输出到屏幕上。
时间: 2024-12-30 18:41:03 浏览: 6
设计一个Java程序,首先我们需要导入相关的`java.io`包,包括`FileInputStream`, `BufferedReader`(用于字符流),以及`DataInputStream`(用于字节流)。以下是一个简单的示例,展示了如何实现这个功能:
```java
import java.io.*;
public class HostsFileReader {
public static void main(String[] args) {
String filePath = "C:\\Windows\\System32\\drivers\\etc\\hosts";
try {
// 字节流读取
FileInputStream byteStream = new FileInputStream(filePath);
DataInputStream byteIn = new DataInputStream(byteStream);
// 使用字节缓冲区逐行读取
StringBuilder lineBuilder = new StringBuilder();
int c;
while ((c = byteIn.read()) != -1) {
if (c == '\n') {
System.out.println(lineBuilder.toString());
lineBuilder.setLength(0); // 清空当前行
} else {
lineBuilder.append((char) c);
}
}
// 关闭流
byteIn.close();
byteStream.close();
// 字符流读取
BufferedReader charStream = new BufferedReader(new FileReader(filePath));
String line;
while ((line = charStream.readLine()) != null) {
System.out.println(line);
}
charStream.close();
} catch (IOException e) {
System.err.println("Error reading file: " + e.getMessage());
e.printStackTrace();
}
}
}
```
在这个程序中,我们先通过`FileInputStream`打开主机文件,然后创建一个`DataInputStream`以字节形式读取。每一行结束时检测`\n`字符,将行的内容打印出来,并清空线缓存。
接着,我们使用`BufferedReader`以字符形式读取,同样逐行打印内容。最后,别忘了关闭所有已打开的流以释放资源。
阅读全文