我正在编写一个程序,该程序获取用户输入,然后写入一个名为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和写文件。
谢谢!
发布于 2015-07-26 03:29:40
为了写入文件,我是否仍然使用System.out.println?
不是的。它写入标准输出,而不是写入您的文件。
如果您正在使用println,那么您需要用一个PrintWriter包装您的BufferedWriter。(查看System类的javadocs,其中记录了out字段。)
bufferedWriter.write是必要的吗?
如果您要直接写入BufferedWriter,那么是的,这是必要的,尽管您可能需要一个适当的“行尾”序列。这使得它变得有点混乱,因为不同的平台有不同的本机“行尾”序列。(如果使用PrintWriter,则println方法将选择用于执行平台的正确方法。)
我还试图在用户输入“完成”后停止处理,但我不知道如何完成这一任务。
提示:阅读关于Scanner类和System.in的文章。
发布于 2015-07-26 03:30:59
在您从控制台获取输入的下面,运行一个while循环来测试input不等于"done"。在while循环中,将input添加到文件中,并获取下一行输入。
while(!input.toLowerCase().Equals("done"))
{
bufferedWriter.write(input);
input = scan.nextLine();
}https://stackoverflow.com/questions/31633317
复制相似问题