2016-10-02 10 views
0

複数行のテキストをコピーしてコンソールに貼り付け、特定のテキストファイル(この場合は「weather.text」)に保存できるようにしたい同じパッケージ内のデータフォルダ内にある)。私は数時間この単純な作業に取り組んできましたが、解決策は私を回避しています。私はjavaに新しいので、事前にお詫び申し上げます。Javaのテキストファイルへのユーザー入力

この静的関数は、メインランチャークラスから呼び出されます。

import java.io.BufferedReader; 
import java.io.File; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.PrintWriter; 
import java.io.Reader; 
import java.util.Scanner; 

    public static void writeFile() 
    { 
     //set up for the user input 
     Reader r = new InputStreamReader(System.in); 
     BufferedReader br = new BufferedReader(r); 
     String str = null; 

     try { 
       //prompt the user to input data 
       System.out.println("Type or paste your data and hit Ctrl + z"); 
       str = br.readLine(); 

       //save the user input data to text file 
       PrintWriter writer = new PrintWriter("weather.txt", "UTF-8"); 
       writer.print(str); 
       writer.close(); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 

現在、私は2つの問題が発生しています。

1)上記のコードは、コンソールに貼り付けられた最初の行のみをコンソールに保存するように見えます。

2)保存されているテキストファイルは、指定したデータサブフォルダではなく、グローバルプロジェクトフォルダにあります。

ご意見やご感想をお寄せください。ありがとうございました。

+0

Ctrl + zで「元に戻す」だけではありませんか?それとも何とかすべてを1行に入れているのですか? 'br.readLine()'は1行だけを読み込みます。 – 4castle

+0

@ 4castle http://superuser.com/questions/476873/what-is-effect-of-ctrl-z-on-a-unix-linux-application – Murillio4

+0

私の教授はctr + zを使ってスキャナを手に入れると言ったテキストファイルを作成している間にデータをファイルに読み込みます」。私はむしろグラフィカルなインターフェースを好むだろうが、我々のカリキュラムではそれほど進んでいない。今のところ、私は運動のためのコマンドラインに対して頭を叩いています。 –

答えて

1

あなたはstrを書いていますが、strは単なるbrの最初の行です。ループ内のすべての行を読みなければなりません。ファイルは、アプリケーションの作業ディレクトリに書き込まれ、第二の問題について

public static void writeFile() 
{ 
    //set up for the user input 
    Reader r = new InputStreamReader(System.in); 
    BufferedReader br = new BufferedReader(r); 
    String str = null; 

    try { 
      //prompt the user to input data 
      System.out.println("Type or paste your data and hit Ctrl + z"); 
      PrintWriter writer = new PrintWriter("weather.txt", "UTF-8"); 
      while((str = br.readLine())!=null) 
      { 
      //save the line 

      writer.println(str); 
      } 
      writer.close(); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

は、このコードを試してみてください。

+0

私はあなたが何を得ているかを見ていますが、これはうまくいきません。私はあなたのwhileステートメントをtypoに変更しました:while(br.readLine()!= null)、それはもう入力を全く保存しません。 –

+0

申し訳ありませんが、括弧がありません。 – SorMun

+0

このように動作します。私はあなたが行方不明だと思った行を追加しました。 str = br.readline(); writer.println(str)の直前にあります。今それは1/3の入力を保存しているようです...非常に奇妙な –

関連する問題