java将多个文件打印到csv
我目前正在写一个作业,它将多个文本文件(文件对象)与行结合在一起,然后用逗号分隔这些行,如:
File1Line1, File2Line1
File1Line2, File2Line2
我想我只是对如何使用这些文件感到困惑。如何从每个文件中获取第一行(第二行、第三行等),同时处理具有不同行数的文件?在此概念上的任何帮助都将不胜感激
你可以在下面搜索框中键入要查询的问题!
我目前正在写一个作业,它将多个文本文件(文件对象)与行结合在一起,然后用逗号分隔这些行,如:
File1Line1, File2Line1
File1Line2, File2Line2
我想我只是对如何使用这些文件感到困惑。如何从每个文件中获取第一行(第二行、第三行等),同时处理具有不同行数的文件?在此概念上的任何帮助都将不胜感激
# 1 楼答案
在大多数语言中,逐行读取文件都很容易。下面是java中的一个例子:How to read a large text file line by line using Java?
从概念上讲,您应该先考虑一个算法,然后编写一些伪代码来进一步探索和理解它
对于这个任务,一个选项是交替读取每个文件,一次一行,然后立即将它们写入csv。第二种选择是将每一行存储在一个数据结构(如数组)中,并在末尾写入,但对于大型文件来说,这可能会很昂贵。您可以通过多种方式处理不同的文件长度,例如只写行而不单独写对应的行。以下是一些基于java的伪代码:
您可以找到大量关于实际方法调用的示例,但首先了解算法很重要
# 2 楼答案
如果您确定这两个文件的行是一对一的映射,那么就很容易了
可以使用两个BufferReader读取这两个文件,只需迭代其中一个文件
一些代码如下:
如果你不能确定这两个文件中的行是一对一的映射,那么你应该将它们全部读入内存并映射到内存中,然后将它们作为CSV文件输出
# 3 楼答案
这段代码一次只直接引用RAM中每个文件的一行,这意味着它应该可以处理大型文件,而不会出现内存异常。在幕后,可能会占用比您看到的更多的内存,但它仍然不会因大文件而崩溃
代码的工作原理是每次从每个文件中读取一行,直到所有文件都为空。当文件的行数用完时,输出一个空字符串
用法:
或者:
此代码未经测试,不处理异常。此代码将允许您从不匹配的文件中读取行,并将它们合并到单个CSV文件中。当文件的行数用完时,只会显示空字符串
这应该让你知道如何准确地完成你的要求