它找到一个文件,但它没有“扫描”它(Java,Eclipse)

时间:2014-07-25 12:35:01

标签: java eclipse java.util.scanner

我正在使用Eclipse Luna Java EE,并将之前的项目移动到它。我正在尝试读取.txt文件。我知道该节目"看到"该文件,但当它测试扫描仪对象以检查它是否" hasNext"时,结果始终为false。

我有什么遗失的吗?

    package visualLaw;
//package system;
import java.io.*;
import java.util.*;
import java.io.FileWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.FileInputStream;
import java.io.IOException;

import javax.swing.SwingUtilities;

public class ParseFile {    
    public static void main (String[] args){                


            File plan = new File("plan.txt");
            final ReadFile rf = new ReadFile(plan);
}
} 


    class ReadFile{

    Scanner s =null;
        ReadFile(File file){

        try {
            s = new Scanner (file);

            System.out.println(file.getAbsolutePath());
        }catch (Exception e) {
            System.out.println("FEIL: argsfilen");
        }   

在上面的代码中,我得到了正确显示的网址,以及所有内容。 但是当我执行下面的代码时,它不会读取单行,如果我在没有测试的情况下尝试它,它会给我一个nullpoint错误。

        while(s.hasNext()) {
            System.out.println("Did I get here?");
            try {
                tag = s.next();
            }catch (Exception e) {
                System.out.println("FEIL: argsfilen");
            }
} 
} 

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

尝试在扫描仪中指定编码类型:

s = new Scanner (file, "ISO-8859-1");

如果仍然不起作用,可能是因为Scanner使用空格作为默认分隔符,并且您的文件可能为空或仅包含空格。试试这个:

s = new Scanner(new BufferedReader(new FileReader(file)));

让我知道它是怎么回事! :)