Java中的命名管道

4
我编写了一个Java应用程序,用于操作由另一个程序创建的文件。我希望我的程序能够实时工作,为此,我需要在其他程序正在写入文件时读取文件。 简单的解决方案是在无限循环中即使已经到达EOF仍然从文件中读取,但这非常低效。
更好的解决方案是使用命名管道,并将程序配置为向该管道写入(我可以选择程序的输出文件)。我对Windows中的管道一无所知,也不知道如何在文件系统中创建它们。如果可能,我想从我的应用程序中创建它们(在Java中),但任何其他方法也可以。
我正在使用Windows XP SP3。
在Windows中是否有可能?最佳方法是什么?
谢谢, Yannay
1个回答

1

虽然Windows有管道,但它们与*nix下的管道并不完全相同(请参见这个维基百科页面),而且Java中也没有支持。常见的建议是使用套接字进行进程间通信。虽然我无法提供任何硬性证据,但如果您在本地主机上运行,这应该不会产生比管道更大的开销,并且如果您稍后选择在不同的计算机上运行进程,这也将使您的代码更加灵活。


如果我能编写这两个程序就好了。然而,我无法访问编写文件的程序的源代码。我只能指定它写入的文件位置(必须是文件系统中有效的路径)。不过还是谢谢。 - yannay
@M. Jessup 如果你在谈论性能,管道比本地套接字表现更出色。 - Pacerier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接