用户在 java 中输入文本文件

User input into a text file in java

我希望用户能够将多行文本复制并粘贴到控制台,然后将其保存到特定的文本文件("weather.text" 在本例中,该文件位于同一个包)。我已经在这个简单的任务上工作了几个小时,但解决方案却让我望而却步。我是 java 的新手,所以提前致歉。

这个静态函数是从主启动器 class 调用的。

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) 正在保存的文本文件在全局项目文件夹中,而不是指定的数据子文件夹中。

如有任何帮助或建议,我们将不胜感激。谢谢。

你正在写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();
    }
}

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