57

作成している小さなプログラムの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 ();       
  }
}
4

11 に答える 11

75

ディレクトリが存在しない場合は、作成する必要があります。Fileクラスはエンティティへの単なるリンクであり、まったく存在できないため、Javaはそれを単独で作成しません。

あなたが言ったように、エラーはファイルを作成できないということです。PrintWriterコンストラクタのドキュメントを読むと、次のことがわかります。

FileNotFoundException-指定された文字列が既存の書き込み可能な通常のファイルを示しておらず、その名前の新しい通常のファイルを作成できない場合、またはファイルを開いたり作成したり中に他のエラーが発生した場合

前に、そこに含まれるフォルダのパスを作成してみてください。

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

PrintWriter printWriter = new PrintWriter(file);
于 2012-07-16T00:11:08.927 に答える
12
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 ();       
  }
}

ファイルの例外をスローします。

于 2012-10-09T05:03:34.430 に答える
5

Fileオブジェクトをコンストラクターに渡しますPrintWriter(File file)

PrintWriter printWriter = new PrintWriter(file);
于 2012-07-16T00:10:32.993 に答える
4
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();
            }
        }
    }
}
于 2012-07-16T00:17:15.147 に答える
1

Javaは通常、ファイルディレクトリの定義に使用する「/」を受け入れないため、次のことを試してください。

 File file = new File ("C:\\Users\\user\\workspace\\FileTester\\myFile.txt");

ファイルが存在しない場合は、次のようにします。

 try {
      file.createNewFile();
 }
 catch (IOException e) {
 e.printStackTrace();
 }
于 2013-02-08T21:49:18.110 に答える
1

Javaの例外について明確に理解している必要があります。Javaには、チェックされた例外とチェックされていない例外があります。

チェックされた例外は、実行時にプログラムをスムーズに実行するために、コンパイル時にコンパイラーによってチェックされます(スローされず、チェックされるだけです)。

注:プログラムでは、チェックされた例外が発生する可能性がある場合は、try catchまたはthrowsキーワードのいずれかによって、そのチェックされた例外を処理する必要があります。そうしないと、コンパイル時エラーが発生します。

CE:予期しない例外java.io.FileNotFoundException;キャッチするか、スローするように宣言する必要があります。

解決方法:1。コードをtrycatchブロックに入れます。

2.上記の他の人が示したようにthrowsキーワードを使用します。

アドバイス:例外についてもっと読む(私は個人的にこのトピックが大好きです)

于 2016-10-21T06:29:08.983 に答える
0

さて、私は最初にメイン全体を試してみると思います(またはあなたはとして使用することができ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();
}   

}
于 2013-03-13T04:51:03.030 に答える
0
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
    }

}

于 2013-11-16T22:09:51.990 に答える
0

PrintWriterクラスは実際にファイルを作成できます。

この例は、JDK1.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または、エンコーディングを宣言せずに、ファイルパスをクラスに渡すこともできます。

于 2015-02-24T17:20:59.287 に答える
0

をダブルクリックしてfile.txt保存しますcommand + s。私の場合はうまくいきました。また、file.txtがプロジェクトフォルダに保存されていることを確認してください。それが機能しない場合。

PrintWriter pw = new PrintWriter(new File("file.txt"));
pw.println("hello world"); // to test if it works.
于 2017-10-05T16:51:10.193 に答える
0

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();

    }

}
于 2018-12-28T09:41:23.730 に答える