Q
獲取文件夾大小
12
A
回答
0
文件夾一般有一個非常小的「大小」,你可以把它們作爲指數。
所有返回文件夾「大小」的程序實際上都會迭代並累加文件的大小。
2
迭代文件夾中的所有子文件夾並獲取所有文件的摘要大小。
6
import java.io.File;
public class GetFolderSize {
int totalFolder = 0;
int totalFile = 0;
public static void main(String args[]) {
String folder = "C:/GetExamples";
try {
GetFolderSize size = new GetFolderSize();
long fileSizeByte = size.getFileSize(new File(folder));
System.out.println("Folder Size: " + fileSizeByte + " Bytes");
System.out.println("Total Number of Folders: "
+ size.getTotalFolder());
System.out.println("Total Number of Files: " + size.getTotalFile());
} catch (Exception e) {}
}
public long getFileSize(File folder) {
totalFolder++;
System.out.println("Folder: " + folder.getName());
long foldersize = 0;
File[] filelist = folder.listFiles();
for (int i = 0; i < filelist.length; i++) {
if (filelist[i].isDirectory()) {
foldersize += getFileSize(filelist[i]);
} else {
totalFile++;
foldersize += filelist[i].length();
}
}
return foldersize;
}
public int getTotalFolder() {
return totalFolder;
}
public int getTotalFile() {
return totalFile;
}
}
27
4
沒有與簡單遞歸遍歷所有子文件夾的微小誤差。它有可能在某些文件系統使用符號鏈接創建循環目錄結構如下面所示:
mkdir -- parents father/son
ln -sf ${PWD}/father father/son
ls father/son/father/son/father/son/father/son/
爲了防止這種錯誤,你可以使用的java.io.File#getCanonicalPath方法。下面的代碼是對previous answer的輕微修改。
public static long getFileSize(File folder) throws IOException {
return (getFileSize (folder , new HashSet <String> ())) ;
}
public static long getFileSize(File folder, Set<String> history)
throws IOException {
long foldersize = 0;
File[] filelist = folder.listFiles();
for (int i = 0; i < filelist.length; i++) {
System.err.println("HISTORY");
System.err.println(history);
boolean inHistory = history.contains(filelist[i].getCanonicalPath());
history.add(filelist[i].getCanonicalPath());
if (inHistory) {
// skip it
} else if (filelist[i].isDirectory()) {
foldersize += getFileSize(filelist[i], history);
} else {
foldersize += filelist[i].length();
}
}
return foldersize;
}
21
import java.io.File;
import org.apache.commons.io.FileUtils;
public class FolderSize
{
public static void main(String[] args)
{
long size = FileUtils.sizeOfDirectory(new File("C:/Windows/folder"));
System.out.println("Folder Size: " + size + " bytes");
}
}
0
public class DirectorySize {
public static void main(String[] args) {
// Prompt the user to enter a directory or a file
System.out.print("Please Enter a Directory or a File: ");
Scanner input = new Scanner(System.in);
String directory = input.nextLine();
// Display the size
System.out.println(getSize(new File(directory)) + " bytes");
}
public static long getSize(File file) {
long size = 0; // Store the total size of all files
if (file.isDirectory()) {
File[] files = file.listFiles(); // All files and subdirectories
for (int i = 0; i < files.length; i++) {
size += getSize(files[i]); // Recursive call
}
}
else { // Base case
size += file.length();
}
return size;
}
}
0
通過文件夾,文件通過文件轉到,獲取每個文件的大小,並將它們添加到可變大小。
static int size=0;
public static int folderSize(File folder){
size = 0;
File[] fileList = folder.listFiles();
for(File file : fileList){
if(!file.isFile()){
folderSize(file);
}
size += file.length();
}
return size;
}
相關問題
- 1. 獲取文件夾的大小
- 2. 使用FtpLib獲取文件夾大小
- 3. 獲取Outlook文件夾大小
- 4. 如何獲取文件夾的大小?
- 5. php loop文件夾獲取文件名和文件大小
- 6. 獲取文件夾或文件的大小
- 7. 遍歷FTP子文件夾來獲取文件大小在C#
- 8. 使用GetListItems從Sharepoint獲取文件/文件夾大小
- 9. 獲取txt文件大小
- 10. 獲取文件大小ExtJS
- 11. 獲取文件大小笨
- 12. 獲取文件大小
- 13. SetFilePointerEx獲取文件大小
- 14. ASPxUploadControl獲取文件大小
- 15. 獲取java.lang.NullPointerException讀取大小的應用程序文件夾
- 16. Linux獲取文件夾及其子文件夾的大小到一定深度
- 17. 獲取文件大小,文件
- 18. 獲取文件的文件大小
- 19. 如何從iPhone文檔文件夾中獲取文件的文件大小
- 20. 獲取大文件的大小
- 21. vb.net從共享文件夾獲取文件的磁盤上的文件大小
- 22. 如何通過Windows API獲取文件夾大小
- 23. 只使用批量命令獲取子文件夾的大小
- 24. 獲取所有子文件夾及其大小
- 25. 在Java中獲取文件夾的大小返回負長
- 26. 是否可以獲取URL中整個文件夾的大小?
- 27. 如何從C#中的httpwebrequest獲取文件夾大小(Winform)
- 28. AWS sdk for ios android java獲取文件夾大小
- 29. 如何在Windows 8.1中獲取本地文件夾大小(winRT)
- 30. 如何在Windows中使用C獲取文件夾大小?
你認爲文件夾「大小」是什麼?文件系統中文件夾的實際大小或其中所有文件的大小? – TofuBeer 2010-07-02 22:39:51