我正在尝试编写一个获取用户输入的程序,然后将其写入名为userStrings.txt
的输出文件中。我也试图在用户输入“完成”后停止处理,但我不知道如何完成此操作。
这是我的代码:
import java.io.*;
import java.util.Scanner;
public class Murray_A04Q2 {
public static void main(String[] args) throws IOException {
// Name of the file
String fileName = "userStrings.txt";
Scanner scan = new Scanner(System.in);
try {
// FileReader reading the text files in the default encoding.
FileWriter fileWriter = new FileWriter("userStrings.txt");
// Wrapping FileReader in BufferedReader.
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
bufferedWriter.write("A string");
bufferedWriter.write("Another string");
bufferedWriter.write("Yet more text...");
System.out.println("Enter something, DONE to quit: ");
String input = scan.nextLine();
// Closing file
bufferedWriter.close();
}
catch (IOException ex){
System.out.println("Error writing to file " + "userStrings.txt" + "");
}
} // End of method header
} // End of class header
为了写入文件,我仍然使用System.out.println
吗?是bufferedWriter.write
甚至是必要的?我只是想了解I / O并更好地写入文件。
谢谢!
答案 0 :(得分:3)
为了写入文件,我还使用System.out.println吗?
没有。这会写入标准输出,而不是文件。
如果您使用的是println
,那么您需要将BufferedWriter
与PrintWriter
打包在一起。 (查看记录System
字段的out
类的javadoc。)
并且是bufferedWriter.write甚至是必要的吗?
如果您要直接写入BufferedWriter
然后是,那么有必要,尽管您可能需要一个合适的“行尾”序列。这就是它变得有点混乱的地方,因为不同的平台有不同的原生“行尾”序列。 (如果使用PrintWriter
,println
方法会选择正确的方法用于执行平台。)
我也试图在用户输入“完成”后停止处理,但我不知道如何完成此操作。
提示:阅读Scanner
课程和System.in
。
答案 1 :(得分:0)
在您从控制台获取输入的同时,运行while
循环以测试input
不等于"done"
。在while
循环内,将input
添加到您的文件中,然后获取下一行输入。
while(!input.toLowerCase().Equals("done"))
{
bufferedWriter.write(input);
input = scan.nextLine();
}