2017-11-12 7 views
0
import java.io.IOException; 
import java.util.*; 

public class Owner { 
    public static Scanner sc = new Scanner(System.in); 
    public static void main(String args[]) throws IOException { 
     String n = sc.nextLine(); 
     Info.namec(n); 
    } 
} 

これは、テキストファイルに「HELLO」を印刷することになっている第二のクラス、です。FileWriterは機能しませんか?

import java.io.*; 

public class Info { 

    public static void namec(String n) throws IOException//name check 
    { 
     File f = new File("TEXT"); 
     FileWriter fw = new FileWriter(f); 
     fw.write("HELLO!"); 
    } 
} 

このコードは機能していません。テキストファイルには何も入力されていません。 2つのクラスがあり、 "Hello"は印刷されていません。

+3

'fw.close();を追加します。 – Elazar

+0

質問はオーナーと何が関係していますか? – Elazar

+0

サイドノート:すべて静的にする必要はありません... – Juan

答えて

2

あなたはファイルを閉じていない、とそこで起こっていくつかのバッファリングなので、それはとても短いですと何も、ファイルに到達していないように見えます。これを試してみてください:

public static void namec(String n) throws IOException { 
    File f = new File("TEXT"); 
    try (FileWriter fw = new FileWriter(f)) { 
     fw.write("HELLO!"); 
    } 
} 

いわゆるtry-with-resources statement自動的に一般的に望ましいtry()で開かれますものを、閉じます。一人でfw.write(「文字列」)を呼び出す

+0

ありがとう。 –

2

は、データがファイルに書き込まれます保証するものではありません。データは単にキャッシュに書き込まれ、ディスク上の実際のファイルに書き込まれることはありません。

私はあなたが()、メソッドの下

  • fw.flushを使用することをお勧め - あなたはあなただけの実際のファイルに反映されるように書いたデータが必要な場合、これを呼び出します。
  • fw.close() - writeメソッドを呼び出すことによって書き込まれる必要があるすべてのデータの書き込みが完了したら、これを呼び出します。
+0

ありがとうございました。 –

0

ファイルライターを使用しているときはいつでも、キャッシュにデータを保存するので、フラッシュライターオブジェクトとクローズファイルライターオブジェクトが必要になります。ここで

私はあなたを助けるサンプルコードの希望を追加しています。

+0

ありがとうございました! –

関連する問題