[英]Difference between getFreespace() and getUsableSpace of File
[英]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.