当前位置: 首页 > 知识库问答 >
问题:

访问相同的系统输入流

杨雪松
2023-03-14
public static void main(String[] args) throws NoSuchAlgorithmException, IOException {

    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
    PrintStream output = new PrintStream(System.out);
    output.println("Enter your username: ");
    String userName;
    userName = input.readLine().trim();

    output.println("Welcome " + userName + "!");
}
public class Test2 {

    public static void main(String[] args) throws UnsupportedEncodingException {

        String data = "John";
        InputStream testInput = new ByteArrayInputStream( data.getBytes("UTF-8") );     
        System.setIn(testInput);

    }

}

上面的代码片段目前不起作用,因为我猜每个类都有自己的输入流。我该怎么做呢?

共有1个答案

桑宇
2023-03-14

我建议重新设计。创建一个主类,生成另外两个线程,它们分别写入PipedInputStream http://docs.oracle.com/javase/7/docs/api/java/io/PipedInputStream.html和PipedOutputStream http://docs.oracle.com/javase/7/docs/api/java/io/PipedOutputStream.html。

这里有一个教程,它清楚地解释了如何做到这一点:io-pipestream-example

记住system.in不应该被写入,这是程序参数的主要部分。

 类似资料:
  • 我有一个棘手的问题要解决。我使用系统。方法调用之前和之后的currentTimeMillis(),因为我必须测量这两条语句之间经过的时间。 我担心的是每次运行程序都会得到不同的结果。 我明白了(这很完美): 几秒钟后,我再次运行程序,我得到(这是错误的): 我说这个输出是错误的,因为每辆车的等待时间不应该少于100毫秒。 什么实际影响基于currentTimeMillis函数的时间计算? 为什么我

  • 问题内容: 我有一个UIAlertController,当用户在TouchID屏幕上选择“输入密码”时,系统会提示用户。在屏幕上显示此内容后,如何恢复用户的输入? 我知道“确定”按钮可能应该有一个处理程序,但是现在此代码实际上并没有执行任何操作,但是我想通过println显示文本字段的输出。对于我来说,这实际上只是一个测试应用程序,用于学习Swift和一些新的API知识。 问题答案: 我知道已经发

  • 5.7.1. 权限系统的作用 5.7.2. 权限系统工作原理 5.7.3. MySQL提供的权限 5.7.4. 与MySQL服务器连接 5.7.5. 访问控制, 阶段1:连接核实 5.7.6. 访问控制, 阶段2:请求核实 5.7.7. 权限更改何时生效 5.7.8. 拒绝访问错误的原因 5.7.9. MySQL 4.1中的密码哈希处理MySQL有先进但非标准的安全/权限系统。本节描述它的工作原理

  • 问题内容: 当我以普通用户身份运行容器时,我可以映射 和修改 主机文件系统上root拥有的目录。这似乎是一个很大的安全漏洞。例如,我可以执行以下操作: 现在,我的 主机 文件系统将在键入时执行命令(大多数情况下无害)。我不敢相信这是理想的行为,但是它正在我的系统中发生(debian延伸)。该命令具有普通权限(755,不是setuid)。 我想念什么? 可能需要澄清更多。目前,我对容器本身的作用或可

  • 本文向大家介绍ASP.NET MVC 3实现访问统计系统,包括了ASP.NET MVC 3实现访问统计系统的使用技巧和注意事项,需要的朋友参考一下 运营网站,我们经常需要分析用户的行为、用户的习惯,用户看重网站的哪一部分,哪一部分是对用户有用的之类的信息,这些信息从哪里来,这时我们就需要用到访问统计系统了。 网上已经有很多的统计系统,如站长统计、百度统计、谷歌分析之类的,别人的东西始终是别人的,为

  • 问题内容: 对于基于Windows / Linux的浏览器,我可以使用Java插件来访问文件系统。由于IOS不支持Java,是否有其他替代方法可以完成它? 问题答案: 不,你不能。无法在iOS野生动物园中上传或下载文件。在iCab中,您可以通过上传,但不能访问文件系统。从浏览器访问整个文件系统将带来安全隐患。而且Java插件无法访问整个文件系统。