跳过我的文件阅读器

时间:2014-04-23 00:56:57

标签: java filereader

 public void file(){
        String fileName = "hello.txt";
        fileName = FileBrowser.chooseFile(true);


        //Open a file and store the information into the OurList
        try
        {
            String s = "";
            File file = new File(fileName);
            FileReader inputFile = new FileReader(file);
            while( inputFile.read() != -1)
            {
                System.out.println(inputFile.read());
                System.out.println();
            }
        }
        catch(Exception exception)
        {
            System.out.println("Not a real file. List is already built");
        }

    }

所以我在使用这段代码时遇到了麻烦。我想从文件中逐字逐字地读取,但现在它正在跳过其他所有文件。我知道它为什么跳过它,它在while循环中以及当我尝试打印时,但据我所知,没有另一种方法可以阻止FileReader然后制作它!= -1。我怎么能让它不跳过?

4 个答案:

答案 0 :(得分:1)

你在循环中调用了read()两次,所以你没有看到每一个奇怪的角色。你需要将read()的结果存储在变量中,测试它为-1,如果是这样则中断,否则打印变量。

答案 1 :(得分:1)

int nextChar;
while( (nextChar = inputFile.read()) != -1)
  {
        System.out.println(nextChar);
        System.out.println();
    }

答案 2 :(得分:0)

使用此模式:

        int value = inputFile.read();
        while(value  != -1)
        {
            System.out.println(value);
            System.out.println();
            value = inputFile.Read();
        }

答案 3 :(得分:0)

正如您已经知道的那样,每个循环调用read()两次,这导致了问题。

以下是正确循环读取的一些常用方法:

我相信大多数人可以自己弄清楚的一种冗长而有效的方式是:

boolean continueToRead = true;
while(continueToRead) {
    int nextChar = file.read();
    if (nextChar != -1) {
        ....
    } else {  // nextChar == -1
        continueToRead = false;
    }
}

或使用break:

while(true) {
    int nextChar = file.read();
    if (nextChar == -1) {
        break;
    }

    ....
}

清洁模式:

int nextChar = file.read();
while (nextChar != -1) {
    ....
    nextChar = file.read();
}

while ((nextChar = file.read()) != -1) {
    ....
}

我更喜欢使用for循环:

for (int nextChar = file.read(); nextChar != 1; nextChar = file.read()) {
    ....
}