编程语言
首页 > 编程语言> > java – File.lastModified()痛苦地慢!

java – File.lastModified()痛苦地慢!

作者:互联网

我正在做一个文件的递归副本,像xcopy /D我只想复制更新的文件目标文件(我不能直接使用xcopy,因为我需要在复制过程中更改一些文件).

在java中,我使用lastModified()检查目标文件是否比源文件旧,而且速度很慢.

>我可以加快这个过程(可能使用JNI ??)?
>是否有任何其他复制脚本可以更好地完成工作(复制新文件regexp更改一些文本文件)?

无论如何都不能复制文件,因为这将比检查上次修改日期(通过网络复制)花费更多时间.

解决方法:

你需要确定它为什么这么慢.

当您运行progrma时,您的进程的CPU利用率是多少.如果它超过50%的用户,那么你应该能够选择你的程序,如果它低于20%你没有那么多你可以做.

通常这种方法很慢,因为您正在检查的文件是在磁盘上而不是在内存中.如果是这种情况,您需要加快访问磁盘的速度,或者获得更快的驱动器.例如这样做SSD可以快10到100倍.

批量查询可能有所帮助.您可以使用多个线程来检查lastModified日期.例如具有固定大小的线程池并为每个文件添加任务.线程池的大小决定了一次轮询的文件数.

这允许操作系统重新排序请求以适应磁盘上的布局.注意:这在理论上很好,但你必须测试这是否会使你的操作系统/硬件上的速度更快,因为它可能会使速度变慢.

标签:java,file-io,copy,last-modified,xcopy
来源: https://codeday.me/bug/20190606/1189251.html