Java - 逐行读取csv文件 - 卡住了奇怪的不存在的字符被读取!

时间:2010-05-20 21:18:24

标签: java file

你好java开发人员。我有一个非常奇怪的问题。

我正在尝试逐行读取csv文件。我正在测试线条的读数。每次我读一行时,该行在每个文本字符之间都包含方形字符。我甚至将文件保存为wordpad和记事本中的txt文件,没有任何变化。

因此,我必须做一些愚蠢的事......

我有一个csv文件,标准的csv文件,是一个带逗号的文本文件。我尝试阅读一行文字,但文本全部被删除,无法在文本中找到该短语。

有什么建议吗?代码如下。

    //open csv
  File filReadMe = new File(strRoot + "data2.csv");
  BufferedReader brReadMe = new BufferedReader
     (new InputStreamReader(new FileInputStream(filReadMe)));

  String strLine = brReadMe.readLine();
  //for all lines
  while (strLine != null){

   //if line contains "(see also"
   if (strLine.toLowerCase().contains("(see also")){
    //write line from "(see also" to ")"
    int iBegin = strLine.toLowerCase().indexOf("(see also");
    String strTemp = strLine.substring(iBegin);
    int iLittleEnd = strTemp.indexOf(")");
    System.out.println(strLine.substring(iBegin, iBegin + iLittleEnd));
   }

   //update line
   strLine = brReadMe.readLine();
  } //end for

  brReadMe.close();

1 个答案:

答案 0 :(得分:4)

我只能认为这是一种不一致的字符编码。在记事本中打开文件,选择另存为,然后在下拉列表中选择UTF-8进行“编码”。然后将“UTF-8”作为第二个参数添加到InputStreamReader,例如

BufferedReader brReadMe = new BufferedReader
     (new InputStreamReader(new FileInputStream(filReadMe), "UTF-8"));

这应该解决与编码的任何不一致。