1. ホーム
  2. java

[解決済み] JavaでPrintWriterクラスとFileクラスを使用するには?

2022-03-04 21:02:20

質問

私が作っている小さなプログラムのためにPrintWriterを理解しようとしているのですが、javaがファイルを作成し、その上に書き込むことができないようなのです。以下のプログラムを実行すると、9行目でFilenotfoundexeptionエラーが発生します。また、指定したディレクトリにファイルを作成することもできません。私は初めてなので、答えは簡単なものにしてください。私はEclipseを使用しています。

import java.io.PrintWriter;
import java.io.File;

public class Testing {

  public static void main(String[] args) {

    File file = new File ("C:/Users/Me/Desktop/directory/file.txt");
    PrintWriter printWriter = new PrintWriter ("file.txt");
    printWriter.println ("hello");
    printWriter.close ();       
  }
}

解決方法は?

ディレクトリが存在しない場合、それを作成する必要があります。Javaは勝手に作成しません。 File クラスは、全く存在しないこともあり得る実体への単なるリンクです。

ご指摘の通り、ファイルが作成できないというエラーです。PrintWriterのコンストラクタのドキュメントを読むと、次のように書かれています。

FileNotFoundException - 与えられた文字列が既存の書き込み可能な通常ファイルを示さず、その名前の新しい通常ファイルを作成できない場合、またはファイルを開くか作成する際に他のエラーが発生した場合。

その前に入っているフォルダのパスを作成してみてください。

File file = new File("C:/Users/Me/Desktop/directory/file.txt");
file.getParentFile().mkdirs();

PrintWriter printWriter = new PrintWriter(file);