2012-07-16 8 views
41

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

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();  
    } 
} 
+0

file.createNewFile();を使用できます。ファイルを作成し、ファイルオブジェクトをPWに渡すために。 –

答えて

63

Fileクラスはまったく存在しないエンティティへの単なるリンクであるため、Javaはそれ自体を作成しません。

あなたが述べたように、エラーはファイルを作成できないということです。ファイルの例外をスロー

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

PrintWriter printWriter = new PrintWriter(file); 
+1

ありがとう、それはまさに私が必要なものです! – SPARK

+14

+1 'file.getParentFile()。mkdirs()'の場合: –

+0

'File File = new File(" dir1/dir2/directory/file.txt ");'ディレクトリを作成する場所を指定しますか?内部アプリケーションまたは外部? –

4

コンストラクタPrintWriter(File file)にFileオブジェクトを渡します。ディレクトリは、あなたがそれを作成する必要が存在しない場合

PrintWriter printWriter = new PrintWriter(file); 
1
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(); 
      } 
     } 
    } 
} 
+1

'FileNotFoundException'がスローされた場合、これはNPEを投げます。 'if(printWriter!= null)printWriter.close();'を使うべきです。 –

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

:あなたはPrintWriterのコンストラクタのドキュメントを読む場合は、

FileNotFoundException - If the given string does not denote an existing, writable regular file and a new regular file of that name cannot be created, or if some other error occurs while opening or creating the file

を見ることができるあなたは前にそれが含まれているフォルダのパスを作成してみてください。

0

Javaが正常に「/」受け入れないファイルのディレクトリを定義する際に使用するので、この試してください:ファイルが存在しない場合

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

は行います

try { 
     file.createNewFile(); 
} 
catch (IOException e) { 
e.printStackTrace(); 
} 

は、いずれかを必要としますJavaのヘルプ、ちょうど私に来る。

0

は、まあ、私が最初にトライキャッチへの主要全体保つと思う(あるいはあなたがpublic static void main(String arg[]) throws IOException)として使用し、また、あなたは、ユーザーのよう

PrintWriter printWriter = new PrintWriter ("C:/Users/Me/Desktop/directory/file.txt"); 

として、これらすべてのdirectiesを書いされるファイルの完全なパスを使用することができ、私、デスクトップでは、ディレクトリは、ユーザがなされるべきである。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(); 
} 

} 
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 
    } 

}

0として
0

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

、またsee the documentation.

、あなただけのエンコーディングを宣言せずPrintWriterクラスへのファイルパスを渡すことができます。

1

あなたはjavaの例外について明確な考えを持っているはずです。 javaでは、チェック例外とチェックされていない例外があります。

実行時にプログラムを円滑に実行するために、コンパイル時にチェックされた例外(チェックされていない、チェックされていない)がコンパイル時にチェックされます。

注:そして、私たちのプログラムでチェック例外が上昇する可能性が彼らのであれば、我々はトライキャッチするかのいずれかによって例外をチェックし、その処理する必要があり、我々は、コンパイル時にエラーが発生しますキーword.Otherwiseをスロー:

CE:予期しない例外java.io.FileNotFoundException;キャッチまたは宣言してスローする必要があります。解決方法

: のtry catchブロックでコード1.Put:上記の他の男によって示されるように

2.useは、キーワードをスローします。

アドバイス:例外の詳細を読む(私は個人的にこの話題を愛する)

0

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

PrintWriter pw = new PrintWriter(new File("file.txt")); 
pw.println("hello world"); // to test if it works. 
関連する問題