从Console读取并使用stdio写入文件

时间:2015-10-27 14:17:44

标签: java stdio

我有这个代码片段,可以读取和写入控制台。我想覆盖while循环,这样输出就会被写入我本地保存的.txt文件而不是写入控制台。 我已经搜索并找到了将System.out重定向到OutputStream(?)的方法,但问题是我想在控制台上显示已执行文件写入/输出的确认。一旦我重定向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");
  }
 }

2 个答案:

答案 0 :(得分:2)

您可以使用FileWriter写入文件而不是写入termial。 完成后,请确保flushclose文件。

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();
  }
 }

答案 1 :(得分:0)

使用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();
  }
 }