OS Utilities vs Java API用于文件中的文本搜索

时间:2012-10-30 19:40:52

标签: java

假设我想搜索文件中的某些文字。我想知道何时应该使用像grep这样的系统实用程序/程序,何时应该使用Java API,比如读取一行,然后搜索该行中的文本或使用java Scanner类。

我想了解这两种方法之间的权衡。我的意思是,假设我们使用grep,那么JVM和grep进程之间会有通信开销吗?是否为grep创建了一个新的OS进程?

grep的性能是否优于普通的java文件搜索?

请帮忙......

2 个答案:

答案 0 :(得分:2)

是的,会有开销。启动外部流程并与之通信成本很高。而且,许多系统没有grep命令。如果要使Java代码可移植,请不要依赖特定于操作系统的命令。

另一个问题是OS命令将能够(例如)搜索文件,但不能搜索内存中的数据结构。

答案 1 :(得分:0)

你基本上是为了获得工具的感知增益而牺牲系统独立性,在某些情况下这是无法避免的。

并非每个系统都会在您认为应该安装的位置或所需的版本中安装您想要的工具。

即使您可以在应用程序中部署工具,也需要为每个目标平台提供实现。

当然,很容易说“它永远不会在X上运行”,但永远不会真正快速出现;)

执行和管理外部应用程序的IO也有额外的优势,虽然并不困难,但编写良好的Java API要复杂得多。

正如我所说,有时候,你根本没有选择(我在Windows和Mac上使用了一些媒体检查工具,我不打算尝试用Java实现,不是因为它不能是的,但因为它复杂而耗时,而且有人已经完成了(使用原生程序))。

您需要平衡选择外部命令权重的好处与使用它的问题。您还应该调查是否已经开始开发可以解决手头问题的API。

IMHO