java读取csv文件 分批_用Java中的多线程读取/处理CSV文件

这篇博客展示了如何使用Java实现多线程来分批读取和处理CSV文件。通过创建一个固定大小的线程池,将文件分成多个部分,并确保每个线程处理一部分,最终将结果写入单独的CSV文件。代码示例中,每个线程读取文件的一个块,保留头部信息,以保持输出的CSV文件格式正确。
摘要由CSDN通过智能技术生成

在这个例子中

files reader

解决方案的重点是读取任何文件或任何文件并将其加载到内存中。

我一直在努力改进它,以便它处理一个csv文件,并在每个线程中保留头,这样每个线程都可以输出一个单独的、格式正确的csv文件。

不幸的是,我不能这样做,因为它从随机位置(行)读取,这意味着它可能从行的中间读取,我会把行弄混。

有没有办法利用这个代码,使csv是特定的?

这是我更改的代码:

public static void main(String[] args) throws IOException {

long start = System.currentTimeMillis();

CSVReader reader = new CSVReader(new FileReader("file.csv"));

String[] columnsNames = reader.readNext();

reader.close();

FileInputStream fileInputStream = new FileInputStream("file.csv");

FileChannel channel = fileInputStream.getChannel();

long remaining_size = channel.size(); //get the total number of bytes in the file

long chunk_size = remaining_size / Integer.parseInt("4"); //file_size/threads

//Max allocation size allowed is ~2GB

if (chunk_size >

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值