2016-08-18 8 views
2

クラスMakeDirectoryにはコンストラクタが含まれています。コンストラクタにはディレクトリが作成され、そのディレクトリにファイルが作成されました。しかし、ファイルとディレクトリが正常に生成されたとしても、新しく作成されたファイルには何も書き込めません。誰でも私がなぜAnything.txtファイルに書き込むことができないのか理解できますか?ファイルに書き込むことができません。Fileクラスを使用してJavaで作成

public class MakeDirectory { 
    MakeDirectory() throws IOException{ 
     // Creates Directory 
     File mydir= new File("MyDir"); 
     mydir.mkdir(); 

     // Creates new file object 
     File myfile = new File("MyDir","Anyfile.txt"); 

     //Create actual file Anyfile.txt inside the directory 
     PrintWriter pr= new PrintWriter(myfile); 
     pr.write("This file is created through java"); 
    } 

    public static void main(String args[]) throws IOException { 
     new MakeDirectory(); 
    } 
} 
+1

どのようなエラーが発生しますか? –

+0

私は何のエラーもありませんでした。ファイルは、特定のディレクトリの下で正常に生成されていますが、私はいつも空のファイルAnything.txtを参照してください。単語または文字列を含まない。 – sam

+0

あなたはこのファイルの中に書くためにあなたのコード魔法使いを見ることができますか? –

答えて

2

PrintWriterを使用する場合は、自動的にフラッシュされていないことを知る必要があります。 writeの後にflushが必要です。また、PrintWriterを閉じることを忘れないでください!

Java 7では、try-with-resources構造を採用しています。この機能を使用すると、コードは次のようになります。

try (PrintWriter pw = new PrintWriter("myFile")) { 
    pw.write("text"); 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} 
+0

サー...あなたは私の一日を作った...最終的に私は答えを得た...それは働いた...それをもっと詳しく説明したいですか?なぜFileWriterなどの他のクラスでもないPrintWriterのために強制的に強制終了して閉じる必要があるのですか? – sam

+1

テキストがバッファに置かれるまで、絶対にフラッシュする必要があります。そのバッファをフラッシュすると、テキストがファイルに出力されます。 'FileWriter'のようなクラスでは、クラスはその関数を書き込み時に自動的に呼び出すように設計されています。 –

+1

ohhh so nice ...私はこのことを私の心の中に残しています...ありがとうとスタックフローは素晴らしいです。私はすぐにjavaのベテランからの解決を得た。ありがとうございました。あなたはそのような良い仕事をしており、私たちにJavaの概念を理解させています。私はここに新しいので、私の感謝の気持ちを表すために自分自身に抵抗することはできませんでした。 – sam

1

BufferedWriterを使用すると、単にファイルに直接、文字列、配列や文字データを書き込むことができます。

void makeDirectory() throws IOException { 
    // Creates Directory 
    File mydir = new File("MyDir"); 
    mydir.mkdir(); 

    // Creates new file object 
    File myfile = new File("MyDir", "Anyfile.txt"); 

    //Create actual file Anyfile.txt inside the directory 
    BufferedWriter bw = new BufferedWriter(new FileWriter(myfile.getAbsoluteFile())); 
    String str = "This file is created through java"; 

    bw.write(str); 
    bw.close(); 
} 
+0

私はそれを試しましたが、新しく作成されたファイルはまだ空です。ファイルの中には何も書き込まれていません。 – sam

+0

私はそれをテストし、 'String str'値のテキストを含むtxtファイルを作成します。 – DimaSan

+0

sir私は文を閉じるのを忘れてしまい、bw.closeを追加した後、私のために働いたのです。ありがとうございます。 – sam

0

あなたはこの方法を使用することができ、これはあなたと一緒に動作するはずです:

public static void main(String[] args) { 
    File file = new File("Anyfile.txt"); 
    try { 
     FileWriter flotEcr = new FileWriter(file); 
     for (char car = 'a'; car <= 'z'; ++car) { 
      flotEcr.write(car); 
     } 
     flotEcr.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
関連する問題