24

ファイルを開いて読み取るプログラムを作成しています。これは私のコードです:

import java.io.*;

public class FileRead{
    public static void main(String[] args){
        try{
            File file = new File("hello.txt");
            System.out.println(file.getCanonicalPath());
            FileInputStream ft = new FileInputStream(file);

            DataInputStream in = new DataInputStream(ft);
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            String strline;

            while((strline = br.readLine()) != null){
                System.out.println(strline);
            }
            in.close();
        }catch(Exception e){
            System.err.println("Error: " + e.getMessage());
        }
    }
}

しかし、実行すると、次のエラーが発生します。

C:\Users\User\Documents\Workspace\FileRead\hello.txt
Error: hello.txt (The system cannot find the file specified)

myFileRead.javahello.txtwhere は、次の場所にある同じディレクトリにあります。

C:\Users\User\Documents\Workspace\FileRead

私は何が間違っているのだろうか?

4

8 に答える 8

61

次のコマンドを呼び出して、ディレクトリ内のすべてのファイルの名前を一覧表示してみてください。

File file = new File(".");
for(String fileNames : file.list()) System.out.println(fileNames);

リストにファイルが含まれているかどうかを確認します。

于 2012-07-19T02:23:44.397 に答える
11

あなたのコードをコピーしましたが、問題なく動作します。

hello.txt の実際のファイル名に問題があるか、間違ったディレクトリで実行していると思われます。@Eng.Fouad が提案する方法で検証することを検討してください

于 2012-07-19T02:30:24.210 に答える
7

ファイルが存在する場所への絶対パス名を指定する必要があります。

        File file = new File("C:\\Users\\User\\Documents\\Workspace\\FileRead\\hello.txt");
于 2012-07-19T02:27:26.080 に答える
3

一般に、File コンストラクター内でファイルの名前を指定するだけで、そのファイルが Java ファイルと同じディレクトリにあることを意味します。ただし、NetBeans や Eclipse などの IDE を使用する場合は、ファイルをプロジェクト フォルダー ディレクトリに保存する必要があります。ですから、それを確認することで問題が解決すると思います。

于 2014-07-01T16:50:57.930 に答える
3

IDE で、読み取りたいファイルを右クリックし、[パスのコピー] を選択して、コードに貼り付けます。

Windows はファイル拡張子を非表示にするため、テキスト ファイル "myfile.txt" を作成すると、実際には "myfile.txt.txt" として保存される可能性があることに注意してください。

于 2014-01-31T10:44:23.023 に答える
1

どのようにプログラムを実行していますか?

実行されるのは Java ファイルではなく、Java コードをコンパイルして作成される .class ファイルです。user1420750 が言うように絶対パスを指定するか、System.getProperty("user.dir")ディレクトリへの相対パスを指定する必要があります。これは、作業ディレクトリまたは java コマンドを実行したディレクトリである必要があります。

于 2012-07-19T03:05:16.623 に答える