0

我正在尝试将 CSV 文件读入我的应用程序以将一堆数据读入表中。每行用逗号分隔,行的每一端都有一个回车符。我尝试使用java中的扫描仪读取分隔符设置为(“,”)的第一行,但我不知道如何在第一行末尾停止扫描仪,当它到达回车时。这是我到目前为止扫描文件中所有内容的代码,因为它不会在回车处停止。

Scanner scn = new Scanner(inputStream);

                    Vector<String> columnTitles = new Vector<String>();
                    scn.useDelimiter(",");

                    // Read the first line to get the column names.
                    while(!scn.hasNextInt())
                    {
                        String newStr = scn.next();
                        columnTitles.add(newStr);
                        System.out.print(newStr);
                    }

这个想法似乎很简单,但我所看到的任何地方都有无用的例子,这些例子都不起作用。

4

3 回答 3

3

您可以使用两个扫描仪:

new Scanner(scanner.nextLine());

或 BufferedReader 和扫描仪

new Scanner(bufferedReader.readLine());

或 BufferedReader 并拆分。

bufferedReader.readLine().split(",");

在您的情况下,我认为您从扫描仪中获得的唯一好处是能够调用 nextInt() 而不是自己将 String 转换为 int (这很容易做到)。

于 2013-09-17T20:42:12.043 回答
3

如果您只是想用文件的第一行填充 columnTitles 向量,然后处理文件的其余部分(或不处理)

  1. 在文件上使用 BufferedReader 将第一行读入字符串
  2. 使用该字符串创建扫描仪
  3. 使用步骤 2 中的扫描仪填充向量
  4. 然后,如果您想处理文件的其余部分,请执行上述操作,但在 while 循环之前调用 scn.nextLine() 以跳过文件的第一行
于 2013-09-17T20:44:50.593 回答
0

回车是 Unicode/ASCII 中的控制字符,可以通过其十六进制值来识别,就像任何其他“可见”字符一样。新行是 0x0A(10),回车(它们略有不同)是 0x0D(13)。

于 2013-09-17T20:30:14.477 回答