簡體   English   中英

文件getFreeSpace行為異常

[英]File getFreeSpace acts strange

我有一個在Tomcat 6上運行並使用JDK 1.6.0_34的應用程序。

如果硬盤驅動器上沒有可用空間,它將定期(大約每1-5分鍾)檢查一個共享文件夾,並執行一些操作(不刪除任何內容,請注意)。 因此,通常一切正常,但是即使硬盤驅動器上有很多可用空間, File GetFreeSpace方法每天大約返回一次0。

在我的代碼中,我有:

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 + "]");
    }
}

這是日志:

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]

那么,造成這種奇怪行為的原因是什么呢?

這可能只是一個小故障,因此,我建議在小於minDiskSize時再次檢查空間。 我的意思是這樣的:

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 + "]");
}
}

希望這會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM