【问题标题】:Edit the method for using System.in and System.out [duplicate]编辑使用 System.in 和 System.out 的方法 [重复]
【发布时间】:2020-02-06 11:57:02
【问题描述】:

我有这个方法

    OutputStream os = new FileOutputStream("out.txt");
    InputStream is = new FileInputStream("out.txt");
    Transit.outputTransport(Parking, os);
    System.out.println(Parking.toString());
    Transport forOut = Transit.inputTransport(is);
    System.out.println(forOut.toString());
    System.out.println();

我需要将文件输出的源更改为 System.out 和 System.in 的文件输入,并在代码中实现它。我怎样才能做到这一点? Transit.outputTransport(Parking, os) - 将字节字符串写入文件和 Transit.inputTransport(is) - 将字节转换为正常形式后返回对象

【问题讨论】:

  • is 替换为System.in,将os 替换为System.out
  • 感谢您的帮助,但它不起作用
  • “它不起作用”,你有错误吗?你看到没有输出吗?它仍然写入文件吗?能否具体说明一下
  • 也许你需要在标准输入/输出重定向的情况下运行命令;例如java MyMainClass < in.txt > out.txt.
  • 请注意,您的示例似乎是读写out.txt。那是坏的。 1)当您打开文件进行输出(像那样)时,它会立即截断文件。 2)如果你尝试同时读取和写入一个文件,结果将难以预测。

标签: java inputstream system.out system.in printstream


【解决方案1】:
PrintStream os = new PrintStream(System.out);
Transit.outputTransport(Parking, os);
System.out.println(Parking.toString());
os.close();

InputStream is = new BufferedInputStream(System.in);
Transport forOut = Transit.inputTransport(is);
System.out.println(forOut.toString());
System.out.println();
is.close();

【讨论】:

  • 它不会工作,因为 inputTransport 有 InputStream 参数,而不是扫描仪
  • @JayCastle - 我已经更新了我的答案。如果您仍然遇到任何问题,请随时发表评论。
  • 不客气。
  • 你能再帮忙做一件事吗?我应该在控制台中为退出代码 0 写什么?控制台正在等待一些符号或其他任何东西,当我输入一些东西时,我有这个错误:com.company.Main.main(Main.java:246) 的线程“main”java.lang.NullPointerException 中的 null 异常
  • 现在我有另一个问题 forOut - 每次都为空
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-16
  • 1970-01-01
  • 2011-06-26
  • 2023-03-12
  • 1970-01-01
  • 2014-10-08
  • 2023-01-20
相关资源
最近更新 更多