出于某种原因,即使在执行了file.exists()检查之后,该值仍然为0,即使您确定这些目录不为空,因为我已经检查了c:\ included。
File folder = new File(directama);
File[] listOfFiles=folder.listFiles();
for (File listOfFile : listOfFiles) {
if(listOfFile.exists()){
String str = tamanhovari.getText(); //IRRELEVANT
Long valisizeGB = parseLong(str); //IRRELEVANT
String length = valueOf(listOfFile.length());//IRRELEVANT
Long bytevalue = parseLong(length); //IRRELEVANT
String gbdivisor ="10737418284"; //IRRELEVANT
Long bytetogb = parseLong(gbdivisor); //IRRELEVANT
Long valisizeBT=valisizeGB*bytetogb; //IRRELEVANT
Long actualfilesize = bytevalue/bytetogb; //IRRELEVANT
if (listOfFile.length()<= valisizeBT) {
if(listOfFile.isFile()){
}
else if (listOfFile.isDirectory()) {
model.addRow(new Object[]{listOfFile.getName(),actualfilesize + " GB" });
}
else{}
}}
else{}
}
它应该在逻辑上以GB的形式返回文件夹的值,但即使我删除GB格式化,并尝试仅返回字节值,它仍然只返回0.。
有什么建议吗?我几乎完成了所有事情。
编辑:解决了!感谢您的快速回复!要检索文件夹的大小,必须使用file.sizeOfDirectory()而不是file.length()答案 0 :(得分:3)
请阅读specs:
The return value is unspecified if this pathname denotes a directory.
答案 1 :(得分:0)
“长度”方法的Javadoc:
返回此抽象路径名表示的文件的长度。如果此路径名表示目录,则返回值未指定。
答案 2 :(得分:0)
您必须阅读文件的实际长度而不是目录。 根据{{3}}:
如果此路径名表示目录,则返回值未指定。
返回此抽象路径名表示的文件的长度(以字节为单位),如果该文件不存在,则返回0L。某些操作系统可能会返回0L表示路径名,表示依赖于系统的实体,例如设备或管道。