作成している小さなプログラムの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);
import Java.io.PrintWriter;
import Java.io.File;
public class Testing {
public static void main(String[] args) throws IOException {
File file = new File ("C:/Users/Me/Desktop/directory/file.txt");
PrintWriter printWriter = new PrintWriter ("file.txt");
printWriter.println ("hello");
printWriter.close ();
}
}
ファイルの例外をスローします。
Fileオブジェクトをコンストラクターに渡します PrintWriter(File file)
:
PrintWriter printWriter = new PrintWriter(file);
import Java.io.File;
import Java.io.PrintWriter;
public class Testing
{
public static void main(String[] args)
{
File file = new File("C:/Users/Me/Desktop/directory/file.txt");
PrintWriter printWriter = null;
try
{
printWriter = new PrintWriter(file);
printWriter.println("hello");
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
finally
{
if ( printWriter != null )
{
printWriter.close();
}
}
}
}
Javaの例外について明確な考えが必要です。 Javaには、チェック済み例外と未チェック例外があります。
チェックされた例外は、実行時にプログラムがスムーズに実行されるように、コンパイル時にコンパイラによってチェックされます(スローされず、チェックされるだけです)。
注:また、プログラムでチェック例外が発生する可能性がある場合は、try catchまたはスローキーWordでチェック例外を処理する必要があります。そうでない場合は、コンパイル時エラーが発生します。
CE:Unexpected Exception Java.io.FileNotFoundException;キャッチまたはスローするように宣言する必要があります。
解決方法:1. try catchブロックにコードを入力します。
2.上記の他の人が示しているように、use throwsキーワード。
アドバイス:例外の詳細を読んでください(このトピックは個人的に気に入っています)。
Javaは通常、ファイルディレクトリの定義に使用する「/」を受け入れないため、これを試してください。
File file = new File ("C:\\Users\\user\\workspace\\FileTester\\myFile.txt");
ファイルが存在しない場合:
try {
file.createNewFile();
}
catch (IOException e) {
e.printStackTrace();
}
PrintWriteを使用する場合は、このコードを試してください
public class PrintWriter {
public static void main(String[] args) throws IOException {
Java.io.PrintWriter pw=new Java.io.PrintWriter("file.txt");
pw.println("hello world");
pw.flush();
pw.close();
}
}
まあ私は最初にメイン全体をtry catchに保つ(またはpublic static void main(String arg[]) throws IOException )
として使用し、次にあなたが書いているファイルのフルパスを使用することもできると思う)
PrintWriter printWriter = new PrintWriter ("C:/Users/Me/Desktop/directory/file.txt");
users、Me、Desktop、directoryなどのすべてのディレクトリは、ユーザーが作成する必要があります。 Javaは、独自のディレクトリを作成しません。それは
import Java.io.*;
public class PrintWriterClass {
public static void main(String arg[]) throws IOException{
PrintWriter pw = new PrintWriter("C:/Users/Me/Desktop/directory/file.txt");
pw.println("hiiiiiii");
pw.close();
}
}
import Java.io.*;
public class test{
public static void main(Strings []args){
PrintWriter pw = new PrintWriter(new file("C:/Users/Me/Desktop/directory/file.txt"));
pw.println("hello");
pw.close
}
}
PrintWriter
class は実際にファイルを作成できます。
この例はJDK 1.7+で動作します。
// This will create the file.txt in your working directory.
PrintWriter printWriter = null;
try {
printWriter = new PrintWriter("file.txt", "UTF-8");
// The second parameter determines the encoding. It can be
// any valid encoding, but I used UTF-8 as an example.
} catch (FileNotFoundException | UnsupportedEncodingException error) {
error.printStackTrace();
}
printWriter.println("Write whatever you like in your file.txt");
// Make sure to close the printWriter object otherwise nothing
// will be written to your file.txt and it will be blank.
printWriter.close();
有効なエンコードのリストについては、 ドキュメントを参照してください。
または、エンコーディングを宣言せずにファイルパスをPrintWriter
クラスに渡すだけでもかまいません。
file.txt
をダブルクリックして、command + s
という名前で保存します。また、file.txt
がプロジェクトフォルダーに保存されていることを確認してください。それが機能しない場合。
PrintWriter pw = new PrintWriter(new File("file.txt"));
pw.println("hello world"); // to test if it works.