相同的文本文件,但扫描程序无法读取其中一个

时间:2016-05-14 06:26:58

标签: java io text-files java.util.scanner

看着我做过的老帖,感觉很可耻。我以为文本文件是相同的。对于谁在寻找同样的问题,我试图更具体和简洁地编辑我的问题。

  • input.txt | 大小:1字节| 内容:-2 | 由我自己创造
  • 输入(2).txt | 大小:4字节| 内容:-2 | 从onlineJudge下载

可能的问题

  1. 文件编码错误导致错误
  2. ' - 2'被解释为String,并出现错误
  3. ====

    我有两个文本文件,名为input.txtbattery_input.txt。两者都包含完全相同的东西,即整数 - 2.它们之间的唯一区别是input.txt的大小是1个字节而battery_input.txt是4个字节。我将它们都放在工作目录中,并且在生成它们时存在File个实例。但是,Scanner无法从battery_input.txt读取整数。以下是代码;它会打印ERR

    import java.util.Scanner;
    import java.io.File;
    public class Scanner_input{
    
        public static void main(String[] args) throws Exception{
            File inputFile = new File("battery_input.txt");
            Scanner sc = new Scanner(inputFile);
            System.out.println("Current Directory = "+System.getProperty("user.dir"));
            if(sc.hasNextInt()) {
                int num = sc.nextInt();
                System.out.println(num);
            } else {
                System.out.println("ERR!");
            }
            sc.close();
        }
    
    }
    

    如果没有if语句,它会打印下面给出的错误消息:

      

    线程“main”中的异常java.util.NoSuchElementException at   java.util.Scanner.throwFor(未知来源)at   java.util.Scanner.next(未知来源)at   java.util.Scanner.nextInt(未知来源)at   java.util.Scanner.nextInt(未知来源)at   Scanner_input.main(Scanner_input.java:10)

2 个答案:

答案 0 :(得分:0)

试试这个

File file = new File("F://fileIO/baseFile.txt");  //absolute path of file
        if (file.exists()) {
            Scanner sc = new Scanner(file);
            while (sc.hasNextLine()) {
                System.out.println(sc.nextLine());
            }
        } else {
            System.out.println("file not found");
        }

答案 1 :(得分:0)

由于您已经提到一个文件长度为1个字节而另一个文件长度为4个字节,因此我怀疑较大的文件是UTF-8编码的。
试试这个 - Scanner sc = new Scanner(inputFile,"utf-8");将输入定义为UTF-8编码。