gpt4 book ai didi

java.lang.UnixProcess 在 NTFS 上执行 `find` 本质上很慢?

转载 作者:行者123 更新时间:2023-11-30 07:34:26 25 4
gpt4 key购买 nike

我试图使用以下方法获取目录下的文件列表:

val d = "..." // Path to a directory on a NTFS partition
val pb = new ProcessBuilder("find", d, "-type", "f", "-print")
pb.directory(new java.io.File(d))
val p = pb.start()
p.waitFor()
val listOfFiles = scala.io.Source.fromInputStream(p.getInputStream).getLines

但是,p.waitFor() 需要一分多钟才能完成。
如果我执行 find 。 -type f -print in bash 而在目录上,然而,完成不到一秒钟。
因此,是 java.lang.UnixProcess 在 NTFS 分区上本身就很慢,还是我做错了什么?

在 Ubuntu 10.10 上使用 Scala 2.8.1、Java 1.6.0_24-b07。

最佳答案

您应该使用进程的 stdout 和 stderr 流,因为 find 可能正在写入它们并阻塞。

看看帖子,When Runtime.exec() won't , 了解更多信息。他们使用 StreamGobbler 来读取输出流,这样您的进程就不会挂起。

关于java.lang.UnixProcess 在 NTFS 上执行 `find` 本质上很慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5195213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com