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");
    }
}

意図は、2 つのテスト文字列とファイル textfile.txt の最初の 100 文字を出力することでした。コードは正常にコンパイルされ、テスト文字列「123: testing compilation」が出力されますが、文字列「abc: testing the file」またはファイルの最初の 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 class のドキュメントが readAll() について述べているように、「入力の残りを読み取り、文字列として返します。」In class で与えられた適切な関数を使用して、ファイルを巻き戻す (ファイルの先頭でコースを移動する) ことをお勧めします。

それが役に立てば幸い!

于 2013-03-24T10:43:17.537 に答える