2010-06-10 82 views
4

我已经编写了一个java应用程序,它处理由另一个程序创建的文件。我希望我的程序能够实时工作,为了做到这一点,我需要在其他程序正在写入时从文件中读取数据。 简单的解决方案是即使在EOF已经在无限循环中达到时仍然从文件中读取数据,但这非常无效。java中的命名管道

更好的解决方案是使用命名管道并配置程序写入该管道(我可以选择程序的输出文件)。我对Windows中的管道一无所知,我不知道如何在文件系统中创建它们。如果可能的话,我想创建他们从我的应用程序(在Java中),但任何其他方式也会很好。

我正在使用windows xp SP3。

它甚至可以在Windows?什么是最好的方法?

感谢, Yannay

回答

1

而Windows有管他们也不是完全一样的在* nix中(见this wikipedia page),而且在Java中不支持。常见的建议是使用套接字进行进程间通信。虽然我无法提供任何确凿的证据,但如果您通过本地主机运行,这不会产生相对于管道的大量开销,并且如果您稍后选择在不同计算机上运行进程,还将使您的代码更加灵活。

+0

如果我写这两个程序,这将是一件好事。但是,我无法访问写入文件的程序的源代码。我只能指定它写入的文件的位置(它必须是文件系统中的有效路径)。 但无论如何感谢 – yannay 2010-06-10 13:50:42

+0

@M。 Jessup如果你正在谈论性能,Pipes将平台上的套接字击败 – Pacerier 2012-02-12 20:13:25