如何在" \ r \ n"时使用换行符读取csv文件不起作用

时间:2018-01-22 19:04:11

标签: java replaceall

我是Java新手,一直在阅读Java文档和其他线程(12),但无法使其正常工作。

基本上我的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"应该在同一条线上。

3 个答案:

答案 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;。它将所有东西加在一起。此致