用户在java中输入文本文件

时间:2016-10-02 00:26:33

标签: java io bufferedreader writer reader

我希望用户能够将多行文本复制并粘贴到控制台中,然后将其保存到特定的文本文件中(" weather.text"在这种情况下,它位于数据中)同一包内的文件夹)。我已经在这个简单的任务上工作了几个小时,解决方案正在逃避我。我是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)保存的文本文件位于全局项目文件夹中,而不是指定的数据子文件夹。

任何帮助或建议表示赞赏。谢谢。

1 个答案:

答案 0 :(得分: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();
    }
}

关于第二个问题,该文件写在应用程序的工作目录中。