我是Java新手,一直在阅读Java文档和其他线程(1,2),但无法使其正常工作。
基本上我的csv文件几乎没有像这样读的记录
How are
you
所以我希望我的代码将其读作一行
How are you
我的代码如下所示:
BufferedReader bReader = new BufferedReader(new InputStreamReader(new FileInputStream(csv),"utf-8"));
while ((line = bReader.readLine()) != null) {
String lines = line.replaceAll("\r\n", " ");
System.out.println(lines);
手动,当我在you
按下退格键时,它会以are
返回并按下空格。然后很好。但我有一个29k记录的大csv文件。我必须有办法解决这个问题。你能指点我的方向吗?谢谢。
[编辑]
这是它出现的方式。
Fav: Beaver tails.
Least fav: HST not included in prices.
编辑2:
-3166,1054,CF ,5992841,15:37.5,en,13007,12,12,Comments: Favorite and/or least favorite things,0,"Cafe Fun
-Least favourite - cabs"
" Cafe Fun Least Favorite - cabs"应该在同一条线上。
答案 0 :(得分:1)
readLine()
将返回文件中的下一行,不带行分隔符。因此,在循环的第一次迭代中,lines
为"How are"
,在第二次迭代中,lines
为"you"
。这些都不包含"\r\n"
,因此您对replaceAll(...)
的调用只返回相同的字符串。
然后,System.out.println(...)
打印文本,并附加一个行分隔符,以便您回到开头的内容。
您可以将所有行收集到列表中:
List<String> lines = Files.readAllLines(csv);
然后使用String.join(...)
连接它们:
String allLines = String.join(" ", lines);
答案 1 :(得分:0)
BufferedReader.readLine()
没有读取换行符,因此您的字符串lines
没有制动。
您只需打印一个System.out.println(lines);
的换行符,将其更改为System.out.print(lines);
,并在while循环后调用System.out.println();
。
BufferedReader bReader = new BufferedReader(new InputStreamReader(new FileInputStream(csv),"utf-8"));
while ((line = bReader.readLine()) != null) {
System.out.print(line);
}
System.out.println();
答案 2 :(得分:0)
启动csv(顾名思义)是用逗号分隔的文件,而不是空格。但是忘了这一点,readLine只读取&#34;指针&#34;是的,在那种情况下&#34;你&#34;在另一条线上而不是&#34;如何&#34;。我认为这就是你的问题所在。解决它的一种方法是使用StringBuilder和&#34; append(String)&#34;。它将所有东西加在一起。此致