小编luc*_*tti的帖子

如何将csv文件按大小拆分为多个文件

在一个java项目中,我生成一个大的csv文件(大约500 Mb),我需要将该文件拆分为多个文件,每个文件最多10 Mb大小。我发现很多类似的帖子,但其中任何一个都回答了我的问题,因为在所有帖子中,java 代码都将原始文件拆分为 10 Mb 文件,并且(显然)截断了记录。相反,我需要每条记录都是完整的、完好无损的。任何记录都应该被截断。如果我将一条记录从原始大 csv 文件复制到一个生成的文件,并且如果我复制该记录,文件尺寸将溢出 10 Mb,我应该能够不复制该记录,关闭该文件,创建一个新文件并将该记录复制到新记录中。是否可以?有人能帮我吗?谢谢你!

我尝试了这段代码:

File f = new File("/home/luca/Desktop/test/images.csv");
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f));
FileOutputStream out;
String name = f.getName();
int partCounter = 1;
int sizeOfFiles = 10 * 1024 * 1024;// 1MB
byte[] buffer = new byte[sizeOfFiles];
int tmp = 0;
while ((tmp = bis.read(buffer)) > 0) {
 File newFile=new File("/home/luca/Desktop/test/"+name+"."+String.format("%03d", partCounter++));
 newFile.createNewFile();
 out = new FileOutputStream(newFile);
 out.write(buffer,0,tmp);
 out.close();
}
Run Code Online (Sandbox Code Playgroud)

但显然不行。此代码将源文件拆分为 n 个 10Mb 文件并截断​​记录。就我而言,我的 csv 文件有 16 列,因此通过上述过程,我的最后一条记录仅填充了 5 …

java csv size split file

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

csv ×1

file ×1

java ×1

size ×1

split ×1