2014-01-29 28 views
1

也许一个尴尬的问题,但我想知道是否有可能有一个Java控制台应用程序运行,它连接到多个命令Promt。Java中的多个命令提示符/控制台?

我欣赏什么是有一个Java应用程序,其提供一个控制台,用于读取控制台输入,一个用于提供类型B的输出等等提供类型A的控制台输出,一个。

对此有何建议或意见?

编辑:

我想类似的东西..

System1.out.println("output A");
System2.out.println("output B");

我的具体问题如下:

我必须提供大量的通过控制台输出给用户,以便使其更具可读性并提供更多内容结构概述我想使用更多控制台。

回答

0

你绝对可以做到这一点 - 但你需要的信息共享某种方式(例如,一个数据库,尽管这可能是矫枉过正根据您的使用)在这两个实例,然后推/轮询信息更新。

根据您的设置,您可以同时了解彼此的,或者你可以让他们完全不清楚。您还可以设置第三个作为中继的实例 - 了解所有实例并处理所有通道中的消息传递。

+0

你怎么能这样做? :) –

+0

那么,要真正简化它: 1)创建你的商店 - 说简单的数据文本文件:data.txt 2)有循环和读取data.txt到内存中 3)当读取的数据有更新后输出到控制台。 4)如果你想只读一个,只写一个,那么你可以使用命令行参数设置它,或者让它们按顺序启动:第一个打开的是你的读者。它会写入data.txt,并显示“Reader已启动”。下一个打开检查“读取器启动”。如果它在那里,它就成为作家 - 否则,它就是读者。 – AlishahNovin

+0

如果你不能做IO,去创建3个进程的路线--1个将充当你的“服务器”,而另外2个将是你的“客户端”。您的服务器首先启动并接收请求,并将它们存储在其应用程序内存中。任何连接的客户端都会将消息推送到服务器上。有了时间戳,你可以确保他们只收到最新的消息。您可以使用Sockets(http://www.oracle.com/technetwork/java/socket-140484.html) – AlishahNovin

0

这可以通过登录类型A和B的输出到一个文件中,并使用诸如尾部/ grep的命令以查看在单独的控制台不同的输出可以容易地进行。

+0

不幸的是,由于我在嵌入式平台上工作,所以额外的I/O对我来说不是一种选择..任何其他想法。另请参阅我上面的编辑)? –

0


这是不可能使用System1.out.println( “...”);像你指示的;然而,系统具有“放样(PrintStream的输出)”方法,该方法可以使用:

try { 
    PrintStream psA = new PrintStream("My_Output_A.log"); 
    PrintStream psB = new PrintStream("My_Output_B.log"); 

    System.setOut(psA); 
    System.out.println("Message for A"); 

    System.setOut(psB); 
    System.out.println("Message for B"); 

} catch (FileNotFoundException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

上面的代码打印消息2个独立的文件。
我认为这是你想要的应用程序。

+0

请参阅我的编辑澄清... –

+0

嗨那里马克。
没有一个控制台可以运行一个Java应用程序。可以写入出错或错误。不过,您仍然可以使用我的建议。为什么不创建一个独立的类来实现我所展示的代码。例如像“printFile.output(0)”这样的函数,其中int'0'指定要打印的文件。然后在你的代码中调用“printFile.output(2)”打印到第二个文件等等。 –