1

我正在尝试使用 Class In ( http://introcs.cs.princeton.edu/java/stdlib/javadoc/ ) 来读取文件,但我没有得到任何回报。我目前的代码是:

public class TestingIn {

    public static void main(String [] args){

        In file = new In("textfile.txt");
        while (!file.isEmpty()) {
            String str = file.readAll();
            System.out.println(str.substring(0, 100));
            System.out.println("abc: testing the file");
        }

        System.out.println("123: testing compilation");
    }
}

目的是打印两个测试字符串和文件 textfile.txt 的前 100 个字符。该代码编译良好并打印出测试字符串“123:测试编译”,但它没有打印出字符串“abc:测试文件”或文件的前100个字符(即http://www. gutenberg.org/files/39063/39063-0.txt,如果这有什么不同的话)。

我正在使用 eclipse,并且我已将 textfile.txt 放在项目的顶层。到目前为止我尝试过的事情包括查看上面链接的 API、google 搜索(这有点棘手,因为 In 这个词很常见)、搜索 stackoverflow、搜索文件输入法(主要是扫描仪提供的)、更改我的代码:

while (!file.isEmpty()) {
    String line = file.readLine();
    if (line.contains("mountain"))
    System.out.println(line);
}

当然,将其关闭然后再打开。感谢您抽出时间来阅读。

4

2 回答 2

0

您可以改用以下代码。

String line = null;
while ((line = file.readLine()) != null) {
    if (line.contains("Mountain"))
    System.out.println(line);
}
于 2013-03-24T10:25:50.360 回答
0

代码非常好,很难我不知道 In 类的内部工作原理。

尝试以下操作:

1)通过调用以下函数确保您的文件是可读的:(假设您使用的是 java SE 7 )

public static boolean isReadable(Path path)

2) 正如 In 类的文档所说,关于 readAll():“读取输入的其余部分并将其作为字符串返回。” 最好使用 In class 中给出的适当函数来倒带文件(在文件开头移动课程)。

希望能帮助到你!

于 2013-03-24T10:43:17.537 回答