一、Java环境下的文件读取方法
使用`FileReader`和`Scanner`类(适用于文本文件)
```java
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ReadFile {
public static void main(String[] args) {
File file = new File("example.txt");
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
}
scanner.close();
}
}
```
适用于读取文本文件,通过`hasNextLine()`和`nextLine()`方法逐行读取内容。
使用`FileInputStream`和`BufferedReader`类(适用于二进制或文本文件)
```java
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
public class ReadFile {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileInputStream("example.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
通过`readLine()`方法逐行读取文本文件,使用`FileInputStream`读取二进制文件。
使用`File`类的`readAllBytes`或`readAllLines`方法(适用于小文件)
```java
import java.io.File;
import java.io.IOException;
import java.util.List;
public class ReadFile {
public static void main(String[] args) {
File file = new File("example.txt");
try {
byte[] bytes = file.readAllBytes();
String content = new String(bytes);
System.out.println(content);
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
适用于小文件,直接读取所有字节并转换为字符串。
二、Android平台下的文件读取方法
读取应用私有文件
使用`Context`的`openFileInput()`方法,仅限应用内部访问。
```java
import android.content.Context;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class ReadFile {
public static String readFile(Context context, String fileName) {
try (FileInputStream fis = context.openFileInput(fileName)) {
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
return new String(buffer);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
```
读取资源文件
将文件放入`res/raw`目录,使用`getResources().openRawResource()`方法。
```java
import android.content.Context;
import java.io.InputStream;
public class ReadFile {
public static String readRawResource(Context context, int resId) {
try (InputStream is = context.getResources().openRawResource(resId)) {
byte[] buffer = new byte[is.available()];
is.read(buffer);
return new String(buffer);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
```
三、其他注意事项
文件路径规范
- 普通文件应存储在应用私有目录(如`/data/data/包名/files`)或公共目录(如`/sdcard`)
- 资源文件需放在`res/raw`目录,且命名需符合规范
异常处理
读取文件时需捕获`FileNotFoundException`等异常,并进行适当处理
字符编码
读取文本文件时建议指定字符编码(如`UTF-8`),避免乱码
通过以上方法,可根据具体需求选择合适的文件读取方式。