2

私はここで基本的な何かが欠けていると確信しています。ドライブに新しいファイルを作成しようとしていますが、エラーが発生します。

Exception in thread "main" java.io.FileNotFoundException: C:\ProgramData\msena\test.txt (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at java.io.FileReader.<init>(FileReader.java:55)
at net.meosoft.relatetoit.core.HibernateSessionFactory.main(HibernateSessionFactory.java:89)

現時点での私のコードは次のとおりです。

    final File file = new File("C:\\ProgramData\\uname2\\test.txt");
    final BufferedReader in = new BufferedReader(new FileReader(file));
    while(in.ready()) {
        System.out.println(in.readLine());
    }
    in.close();

現時点で何が問題になっていますか?そこにあったとしても、読みたいだけです(ファイルを作成する必要があります)。

4

4 に答える 4

9

Javaは、File()が存在することを自動的にチェックしません。また、要求された場合に自動的に作成しません。

次のいずれかを行う必要があります。

  1. ファイルの存在のチェックを追加します:if(file.exists()) { ... }
  2. 上記と同様にチェックを追加しますが、チェックが存在しない場合は、次を呼び出しますfile.createNewFile();。これにより、ファイルシステム上に新しいファイルが作成され、使用できるようになります。

それでも機能しない場合は、そのディレクトリへの書き込み権限があるかどうかを確認します。:)

于 2012-08-14T01:06:22.650 に答える
2

Fileクラスは、ファイル自体ではなく、ファイルへのパスを表します。ファイルが存在しない場合(!File.exists())、ファイルにアクセスしようとすると例外がスローされます。ファイルへのパスが正しく、その場所から読み取る権限があることを確認してください。

ファイルを作成する場合は、を使用できますFile.createNewFile()

于 2012-08-14T01:06:39.027 に答える
0

ファイルを作成する方法です。

Formatter output;//pointer to an object that will write to a file
public void createFile(){
try{
  output = new Formatter("C:\\ProgramData\\uname2\\test.txt");
  //test.txt is the name of the file to be created
  //create file in the same folder called test.txt
  //if existed overwrite it
    }
  catch(FileNotFoundException e){
  System.err.println("Error creating file"+e.getMessage());
 }

メインで createFile() を呼び出します

 CreateTextFile file = new CreateTextFile();
 file.createFile();
于 2012-08-14T01:17:06.290 に答える