2017-03-23 7 views
-1

Javaを使用して簡単な文字列をテキストファイルに書き込もうとしています。しかし、何らかの理由で自分のコードがエラーや例外をスローすることはありませんが、ボタンをクリックするとテキストファイルが空になります。ここに私のコードJava - 文字列はファイルに書き込まれません

btnOk.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      String text = textEntered.getText(); 
      try{ 
       PrintWriter out = new PrintWriter("~\\Users\\username\\Desktop\\File1.rft"); 
       out.println(text); 
       out.close(); 
      }catch(FileNotFoundException io){ 
       System.out.println(io.getLocalizedMessage()); 
      } 
     } 
    }); 

いくつかの余分な情報である、私のファイルパス内のユーザー名は、私はちょうどこの記事のためにそれをスワップアウト私のユーザー名です。

ご協力いただきありがとうございます。

+1

'C:\\ Users \\ username \\ Desktop \\ File1.rft'のような絶対パスを使用するようにしてください。 –

+0

テキストの値は? – muzzlator

+0

デバッグログを追加して、実際には 'text'に何かがあることを確認してください。 – pvg

答えて

1

あなたのコードでは、いくつかの小さなテストの変更で正常に動作し、あなたが完全なファイルパスを指定する場合:

public static void main(String[] args){ 
     Scanner in = new Scanner(System.in); 

     String text = in.nextLine(); 
     try{ 
      PrintWriter out = new PrintWriter("/Users/user/NetBeansProjects/TestForSO/src/testforso/file.txt"); 
      out.println(text); 
      out.close(); 
     }catch(FileNotFoundException io){ 
      System.out.println(io.getLocalizedMessage()); 
     } 
} 
0

のみシェルは~を理解しています。 Javaはそうではなく、カーネルはそうではありません。 System.getProperty("user.home")の結果を使用します。

あなたのパスは全く意味をなさない。それはSystem.getProperty("user.home")+"/Desktop/File1.rft"のようなものでなければなりません。

Javaファイル名にバックスラッシュを使用する必要はありません。

関連する問題