我希望用户能够将多行文本复制并粘贴到控制台中,然后将其保存到特定的文本文件中(" 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)保存的文本文件位于全局项目文件夹中,而不是指定的数据子文件夹。
任何帮助或建议表示赞赏。谢谢。
答案 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();
}
}
关于第二个问题,该文件写在应用程序的工作目录中。