java读本地文件
时间: 2025-05-27 16:34:27 浏览: 5
以下是使用 Java 读取本地文件的几种方法及其代码示例:
### 方法一:使用 `FileReader` 和 `BufferedReader`
这种方法通过 `FileReader` 和 `BufferedReader` 来逐行读取文件内容。如果文件中有中文字符,建议设置合适的编码格式以避免乱码。
```java
public static void readFileUsingBufferedReader() {
FileReader fileReader = null;
BufferedReader br = null;
String line = null;
try {
// 文件路径
File testFile = new File("E:\\Test_JAVAProgram\\TestReadFile\\file.txt");
if (!testFile.exists()) {
System.out.println(testFile.getName() + " doesn't exist.");
}
// 初始化 FileReader 和 BufferedReader
fileReader = new FileReader(testFile);
br = new BufferedReader(fileReader);
// 逐行读取文件内容
line = br.readLine();
while (line != null) {
System.out.println(line);
line = br.readLine();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭资源
if (br != null) {
try {
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (fileReader != null) {
try {
fileReader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
```
此方法适用于大多数简单的文件读取场景[^1]。
---
### 方法二:使用 `InputStream` 和 `InputStreamReader`
这种方式适合处理更复杂的输入流操作,尤其是当需要自定义编码时。
```java
import java.io.*;
public class ReadFileExample {
public static void readFileUsingInputStream() {
InputStream in = null;
BufferedReader bufferedReader = null;
try {
// 打开文件作为输入流
in = new FileInputStream("C:\\Users\\PC\\Desktop\\comment.txt");
// 使用 InputStreamReader 并指定 UTF-8 编码
bufferedReader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
String line;
StringBuilder contentBuilder = new StringBuilder();
// 逐行读取并拼接成字符串
while ((line = bufferedReader.readLine()) != null) {
contentBuilder.append(line).append("\n");
}
System.out.println(contentBuilder.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭资源
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
```
该方法允许显式设定编码方式,从而有效防止因编码不匹配而导致的乱码问题[^3]。
---
### 方法三:使用 NIO 的 `Files.lines()` 方法
这是 Java 7 及以上版本推荐的方式之一,利用 NIO 提供的功能可以更加简洁高效地完成文件读取任务。
```java
import java.nio.file.*;
import java.util.stream.Stream;
public class NioReadFileExample {
public static void readFileUsingNio() {
Path pathToFile = Paths.get("E:\\a.txt");
try (Stream<String> stream = Files.lines(pathToFile)) {
stream.forEach(System.out::println);
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
这种基于流的操作不仅简化了代码结构,还提高了性能表现[^2]。
---
#### 注意事项
1. **异常处理**:无论采用哪种方法,在实际开发过程中都需要妥善捕获可能发生的各种异常情况。
2. **资源关闭**:务必确保所有打开的 I/O 资源都能被正确释放掉,以免造成内存泄漏或其他潜在风险。
3. **编码支持**:对于包含特殊字符集(如汉字)的文档来说,应该考虑明确指明所使用的字符编码形式来规避可能出现的数据损坏现象。
---
阅读全文
相关推荐


















