JAVA - 简单文件阅读器(类:文件,扫描仪,hasNextLine()) - 已编译但无法正常工作

时间:2014-09-29 09:56:54

标签: java csv netbeans

我有点问题。 我正在使用NetBeans,我想创建一个程序,它将在* .csv文件中交换字符。

我试图通过几种方式加载文件,但我现在不知道为什么,它不起作用

代码是正确的,可以编译:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class FixRaports {

    public static void main(String[] args) throws FileNotFoundException {

        String filePath = "D:/ala.csv";

        File fileName = new File(filePath);

        Scanner scanner = new Scanner(fileName);

        while (scanner.hasNextLine())
        {
          line = scanner.nextLine();
          System.out.println(line);
        }

        scanner.close();

    }

}

当然,文件" ala.csv"存在于D:\。

它包含:

    Ja "lubie " - placki

bo placki są fajne i "slitasne"
 """ My tez je lubimy """
- odpowie ci 'prawie' każdy
"placki ; placki ; ' to jest; to ! """

代码编译正确,但是当我播放应用程序时,它只会返回:

run:
BUILD SUCCESSFUL (total time: 0 seconds)

所以我试过了:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class FixRaports {

    public static void main(String[] args) throws FileNotFoundException {

        String filePath = "D:/ala.txt";

        File fileName = new File(filePath);
        Scanner scanner = new Scanner(fileName);

        String line = scanner.nextLine();
        System.out.println(line);

        scanner.close();

    }

}

它返回:

run:
Exception in thread "main" java.util.NoSuchElementException: No line found
    at java.util.Scanner.nextLine(Scanner.java:1540)
    at FixRaports.main(FixRaports.java:14)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

我不明白,为什么NetBeans会返回"找不到任何行" ,当文件" ala.csv"包含几行?

我做错了什么?

1 个答案:

答案 0 :(得分:0)

你的第一个代码没有编译:行

line = scanner.nextLine();

无法正常工作,因为变量行未定义。替换为

String line = scanner.nextLine();

正如您在第二个示例中所做的那样,代码是正确的。

至于为什么扫描仪没有返回一行:当扫描仪找不到所需的令牌(在你的情况下是换行符)时,抛出NoSuchElementException。如果文件包含换行符,请检查您的文件。

最后请注意,在您的问题中,您指的是ala.csv,但在您的代码中,您打开了ala.txt文件。或许您刚创建了一个新文件,当然不包含换行。