有没有针对Java在大型目录上行走时性能较差的解决方法?

有没有针对Java在大型目录上行走时性能较差的解决方法?,第1张

有没有针对Java在大型目录上行走时性能较差的解决方法?

尽管不是很漂亮,但我还是通过在启动我的应用程序之前将dir / ls的输出传递到文件中并传入文件名来解决此类问题。

如果您需要在应用程序中执行此 *** 作,则可以只使用system.exec(),但这会带来一些麻烦。

你问。第一种形式将非常快,第二种形式也将非常快。

确保对每行执行一项(裸露,无装饰,无图形),所选命令的完整路径和递归选项。

编辑:

仅仅30分钟就可以得到目录清单,哇。

令我惊讶的是,如果使用exec(),则可以将其标准输出重定向到管道中,而不是将其写入文件中。

如果这样做,则应立即开始获取文件,并能够在命令完成之前开始处理。

交互实际上可能会使事情变慢,但可能不会—您可以尝试一下。

哇,我只是为您找到.exec命令的语法,并偶然发现了它,可能正是您想要的(它使用exec和“
ls”列出了一个目录,并将结果通过管道传递到您的程序中进行处理):
好的链接在回溯中(Jörg在评论中提供了从Oracle打破的Sun
替代此)


无论如何,这个想法很简单,但是正确编写代码却很烦人。我会去窃取互联网上的一些代码,然后将它们破解-brb

/ ** *注意:仅将此作为最后的选择!它特定于Windows,甚至 *这不是一个好的解决方案,但是应该很快。 *  *要使用它,扩展FileProcessor并使用列表调用processFiles(“ ...”) *选项,如果您希望它们像/ s ...我强烈建议/ b *  *覆盖processFile,它将为输出的每一行调用一次。 * /导入java.io. *;公共抽象类FileProcessor{   公共无效processFiles(String dirOptions)   {      处理theProcess = null;      BufferedReader inStream = null;      //调用Hello类      尝试      {          theProcess = Runtime.getRuntime()。exec(“ cmd / c dir” + dirOptions);      }      catch(IOException e)      {         System.err.println(“ exec()方法错误”);         e.printStackTrace();        }      //从被调用程序的标准输出流中读取      尝试      {         inStream = new BufferedReader(          新的InputStreamReader(theProcess.getInputStream()));processFile(inStream.readLine());      }      catch(IOException e)      {         System.err.println(“ inStream.readLine()发生错误”);         e.printStackTrace();        }   } //结束方法   / **覆盖此方法-每个文件将被调用一次* /   公共抽象无效processFile(String filename);} //结束类

谢谢IBM的代码捐助者



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5586515.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存