文字列をテキストファイルに出力する簡単なプログラムを作成しようとしています。ここで見つけたコードを使用して、次のコードを作成しました。
import Java.io.*;
public class Testing {
public static void main(String[] args) {
File file = new File ("file.txt");
file.getParentFile().mkdirs();
PrintWriter printWriter = new PrintWriter(file);
printWriter.println ("hello");
printWriter.close();
}
}
J-graspから次のエラーがスローされます。
----jGRASP exec: javac -g Testing.Java
Testing.Java:10: error: unreported exception FileNotFoundException; must be caught or declared to be thrown
PrintWriter printWriter = new PrintWriter(file);
^
1 error
----jGRASP wedge2: exit code for process is 1.
私はJavaにかなり慣れていないので、これが何を意味するのか分かりません。誰かが私を正しい方向に向けることができますか?
ファイルが存在しない場合、FileNotFoundException
がスローされる可能性があることをコンパイラーに通知していません。また、FileNotFoundException
がスローされます。
これを試して
public static void main(String[] args) throws FileNotFoundException {
File file = new File ("file.txt");
file.getParentFile().mkdirs();
try
{
PrintWriter printWriter = new PrintWriter(file);
printWriter.println ("hello");
printWriter.close();
}
catch (FileNotFoundException ex)
{
// insert code to run when exception occurs
}
}
Javaを初めて使用する場合で、PrintWriter
の使用方法を学習しようとしている場合は、以下の基本的なコードがあります。
import Java.io.*;
public class SimpleFile {
public static void main (String[] args) throws IOException {
PrintWriter writeMe = new PrintWriter("newFIle.txt");
writeMe.println("Just writing some text to print to your file ");
writeMe.close();
}
}
PrintWriter
は、ファイルに問題がある場合(ファイルが存在しない場合など)に例外をスローする場合があります。追加する必要があります
public static void main(String[] args) throws FileNotFoundException {
次に、try..catch
句をコンパイルして使用し、例外をキャッチして処理します。
つまり、new PrintWriter(file)
を呼び出すと、例外がスローされる可能性があります。その例外を処理するか、プログラムで例外を再スローできるようにする必要があります。
import Java.io.*;
public class Testing {
public static void main(String[] args) {
File file = new File ("file.txt");
file.getParentFile().mkdirs();
PrintWriter printWriter;
try {
printwriter = new PrintWriter(file);
printWriter.println ("hello");
printWriter.close();
} catch (FileNotFoundException fnfe) {
// Do something useful with that error
// For example:
System.out.println(fnfe);
}
}