简体   繁体   English

文件getFreeSpace行为异常

[英]File getFreeSpace acts strange

I have an application, which runs on Tomcat 6, and uses JDK 1.6.0_34. 我有一个在Tomcat 6上运行并使用JDK 1.6.0_34的应用程序。

Periodically (for about every 1-5 minutes) it checks a shared folder, and do some actions (no content delete, note) if there is no free space on a hard drive. 如果硬盘驱动器上没有可用空间,它将定期(大约每1-5分钟)检查一个共享文件夹,并执行一些操作(不删除任何内容,请注意)。 So, usually everything is ok, but for about once a day File getFreeSpace method return 0, even while there is a lot of free space on a hard drive. 因此,通常一切正常,但是即使硬盘驱动器上有很多可用空间, File GetFreeSpace方法每天大约返回一次0。

In my code I have this: 在我的代码中,我有:

public void toDo() {
    File file = new File(FOLDER_PATH);
    long space = file.getFreeSpace();
    long minDiskSize = settings.getMinDiskSize();
    String absolutePath = file.getAbsolutePath();
    if (space < minDiskSize) {
        log.debug("NOT_OK:\n" +
                "Folder path: [" + absolutePath + "]\n" +
                "Min free space from config: [" + minDiskSize + "]\n" +
                "Free space on server: [" + space + "]");
        //Do some actions
    } else {
        log.debug("OK:\n" +
                "Folder path: [" + absolutePath + "]\n" +
                "Min free space from config: [" + minDiskSize + "]\n" +
                "Free space on server: [" + space + "]");
    }
}

Here is logs: 这是日志:

2016-03-02 13:35:22,810 <- note, time from a log file.
NOT_OK:
Folder path: [\\server\FOLDER$\input]
Free space from config: [104857600]
Free space on server: [0]

2016-03-02 13:36:24,029 <- note, just a minute latter everything is OK again.
OK:
Folder path: [\\server\FOLDER$\input]
Min free space from config: [104857600]
Free space on server: [402494513152]

So, what can be a cause of such strange behavior? 那么,造成这种奇怪行为的原因是什么呢?

It might just be a glitch so, I would suggest double checking the space when it is less than minDiskSize . 这可能只是一个小故障,因此,我建议在小于minDiskSize时再次检查空间。 By this I mean something like this: 我的意思是这样的:

public void toDo() {
File file = new File(FOLDER_PATH);
long space = file.getFreeSpace();
long minDiskSize = settings.getMinDiskSize();
String absolutePath = file.getAbsolutePath();
if (space < minDiskSize) {
Thread.sleep(62000);
space = file.getFreeSpace();
 if(space < minDiskSize){
    log.debug("NOT_OK:\n" +
            "Folder path: [" + absolutePath + "]\n" +
            "Min free space from config: [" + minDiskSize + "]\n" +
            "Free space on server: [" + space + "]");
    //Do some actions
   }else{log.debug("OK:\n" +
            "Folder path: [" + absolutePath + "]\n" +
            "Min free space from config: [" + minDiskSize + "]\n" +
            "Free space on server: [" + space + "]");}
} else {
    log.debug("OK:\n" +
            "Folder path: [" + absolutePath + "]\n" +
            "Min free space from config: [" + minDiskSize + "]\n" +
            "Free space on server: [" + space + "]");
}
}

Hope this helped. 希望这会有所帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM