如何逐行读取csv文件,在字段中包含换行符和逗号

时间:2014-12-09 06:58:15

标签: java file-handling

我必须逐行读取一个csv文件并使用Ctrl + A(\ 001)更改换行符(alt +输入,即\ n \ r),空格和comas在字段的一侧。当我尝试使用读取缓冲读取器时,它从\ n开始,而不是将\ n \ r解释为非换行符。我该怎么办呢我必须在java中完成这个

2 个答案:

答案 0 :(得分:1)

您可以将整个文件读入String变量,然后使用String.replaceAll()替换所需的字符: -

    File file = new File("abc.csv");
    FileInputStream fis = null;
    fis = new FileInputStream(file);
    byte[] data = new byte[(int) file.length()];
    fis.read(data);
    fis.close();
    String str = new String(data, "UTF-8");

然后替换字符串中的字符: -

str = str.replaceAll("\r\n", " ");
str = str.replaceAll("[,]", ";");
System.out.println(str);

然后,您可以使用新字符串

创建新文件或覆盖现有文件

答案 1 :(得分:0)

我认为你的意思是" \ r \ n"而不是" \ n \ r"。通常基于Windows的程序生成" \ r \ n"而基于Linux的程序使用" \ n"。

缓冲读卡器通常使用全局" line.separator"应该专门为您的系统设置的设置。

旁注:使用框架进行解析通常很有趣,而不是进行实际的行读取,因为框架通常包含很多边缘情况(如此)。