从控制台读取并使用 stdio 写入文件

Read from Console and write to file with stdio

我有这段代码可以从控制台读取和写入。我想覆盖 while 循环,这样输出就不会写入控制台,而是写入本地保存在我电脑上的 .txt 文件。 我已经搜索并找到了一种将 System.out 重定向到 OutputStream(?) 的方法,但问题是我想在控制台上显示一个确认信息,即 write/output 到文件的操作已经执行。一旦我重定向 System.out,我使用 System.out 输出的所有其他内容也被重定向(?) 你们能帮帮我吗?

 class Echo {

  public static void main (String [] args) throws java.io.IOException {
    int ch;
    System.out.print ("Enter some text: ");
    while ((ch = System.in.read ()) != '\n') {
      System.out.print ((char) ch);
    }
    System.out.println("Zugriff aufgezeichnet");
  }
 }

您可以使用 FileWriter 写入文件而不是写入终端。 确保在完成文件后 flush and close 文件。

class Echo {

  public static void main (String [] args) throws java.io.IOException {
    int ch;
    System.out.print ("Enter some text: ");
    FileWrite fw=new FileWriter(new File("fileName.txt"));
    while ((ch = System.in.read ()) != '\n') {
      fw.write((char) ch + "");
    }
    System.out.println("Zugriff aufgezeichnet");
    fw.flush();
    fw.close();
  }
 }

使用Scanner获取输入

你不需要 while 循环,我认为这是更好的方法 输出在另一个答案中用 FileWriter

解释

我把它和nafas的代码混在一起了:

class Echo {

  public static void main (String [] args) throws java.io.IOException {

    Scanner sc = new Scanner (System.in);
    System.out.print ("Enter some text: ");
    String input = sc.nextLine();
    System.out.println("Zugriff aufgezeichnet");

    FileWrite fw=new FileWriter(new File("fileName.txt"));
    fw.write(input);
    fw.flush();
    fw.close();
  }
 }