java如何读取大文件保存再list中
时间: 2024-09-15 07:02:36 浏览: 32
在Java中,处理大文件并将其内容保存到List中,通常采用分块读取的方式来避免一次性加载所有数据导致内存溢出。这可以通过BufferedReader和ArrayList配合使用来实现。以下是步骤:
1. 创建ArrayList来存储数据,假设你的元素类型是String:
```java
ArrayList<String> dataList = new ArrayList<>();
```
2. 使用BufferedReader逐行读取文件:
```java
FileInputStream fis = new FileInputStream("your_file_path");
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
try {
String line;
while ((line = br.readLine()) != null) {
dataList.add(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close(); // 关闭流资源
} catch (IOException e) {
e.printStackTrace();
}
}
```
这里我们使用了`readLine()`方法一次读取一行,将每行的内容添加到ArrayList中。
相关问题
java读取txt文件到list列表中
以下是Java读取txt文件内容并将其保存到List列表中的示例代码:
```java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class ReadFileToListExample {
public static void main(String[] args) {
File file = new File("example.txt");
BufferedReader reader = null;
List<String> lines = new ArrayList<>();
try {
reader = new BufferedReader(new FileReader(file));
String line;
while ((line = reader.readLine()) != null) {
lines.add(line);
}
System.out.println(lines);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
在这个示例中,我们创建一个`List<String>`对象来保存文件的每一行内容。我们使用`readLine()`方法逐行读取文件内容,并将每一行添加到列表中。最后,我们打印出保存在列表中的所有行。
java通过文件保存和读取list对象表信息
要在Java中保存和读取List对象,可以使用对象输入流(ObjectInputStream)、对象输出流(ObjectOutputStream)和文件输入流(FileInputStream)和文件输出流(FileOutputStream)。
以下是一个示例代码,假设我们要将一个List保存到文件“list.dat”中:
```java
List<MyObject> myList = new ArrayList<MyObject>(); // 创建一个List对象
// 添加一些MyObject对象到List中
FileOutputStream fileOut = new FileOutputStream("list.dat");
ObjectOutputStream objectOut = new ObjectOutputStream(fileOut);
objectOut.writeObject(myList); // 将List对象写入文件
objectOut.close();
fileOut.close();
```
要从文件中读取List对象,可以使用以下代码:
```java
FileInputStream fileIn = new FileInputStream("list.dat");
ObjectInputStream objectIn = new ObjectInputStream(fileIn);
Object obj = objectIn.readObject(); // 读取对象
List<MyObject> myList = (List<MyObject>) obj; // 将对象转换为List<MyObject>类型
objectIn.close();
fileIn.close();
```
需要注意的是,List中的对象必须实现Serializable接口,以便将其序列化为字节流;反之,要从文件中读取List对象,文件中必须包含序列化的List对象数据。