我創建了一個應用程序,爲用戶提供了一定的內存空間,我希望 可以計算他在文件夾中使用的總空間,並向他/她顯示所使用的總空間以及可用的總剩餘空間。 如何計算整個文件夾的大小,包括c#中特定文件夾的所有文件。如何獲得C#中特定文件夾的總大小?
4
A
回答
2
您可以使用下面的函數來計算特定文件夾的大小。
static String GetDriveSize(String ParticularFolder, String drive)
{
String size = "";
long MaxSpace = 10485760;
String rootfoldersize = @"~/userspace/" + ParticularFolder+ "/";
long totalbytes = 0;
long percentageusage = 0;
totalbytes = GetFolderSize(System.Web.HttpContext.Current.Server.MapPath(rootfoldersize) + "" + drive + "/");
percentageusage = (totalbytes * 100)/MaxSpace;
size = BytesToString(totalbytes);
return size;
}
static long GetFolderSize(string s)
{
string[] fileNames = Directory.GetFiles(s, "*.*");
long size = 0;
// Calculate total size by looping through files in the folder and totalling their sizes
foreach (string name in fileNames)
{
// length of each file.
FileInfo details = new FileInfo(name);
size += details.Length;
}
return size;
}
static String BytesToString(long byteCount)
{
string[] suf = { "B", "KB", "MB", "GB", "TB", "PB", "EB" }; //Longs run out around EB
if (byteCount == 0)
return "0" + suf[0];
long bytes = Math.Abs(byteCount);
int place = Convert.ToInt32(Math.Floor(Math.Log(bytes, 1024)));
double num = Math.Round(bytes/Math.Pow(1024, place), 1);
return (Math.Sign(byteCount) * num).ToString() + suf[place];
}
希望這會對你有幫助。
2
您可以使用DirectoryInfo.GetFiles
和FileInfo.Length
:
DirectoryInfo dir = new DirectoryInfo(@"D:\Data\User_ABC");
FileInfo[] files = dir.GetFiles();
long totalByteSize = files.Sum(f => f.Length);
如果您還希望包括子sirectories:
FileInfo[] files = dir.GetFiles("*.*", SearchOption.AllDirectories);
1
using System;
using System.IO;
class Program
{
static void Main()
{
Console.WriteLine(GetDirectorySize("C:\\Site\\"));
}
static long GetDirectorySize(string p)
{
// 1.
// Get array of all file names.
string[] a = Directory.GetFiles(p, "*.*");
// 2.
// Calculate total bytes of all files in a loop.
long b = 0;
foreach (string name in a)
{
// 3.
// Use FileInfo to get length of each file.
FileInfo info = new FileInfo(name);
b += info.Length;
}
// 4.
// Return total size
return b;
}
}
相關問題
- 1. 如何獲得特定文件夾environment.getexternalstoragedirectory()
- 2. 使用python exchangelib,如何獲得郵件文件夾中消息的總大小
- 3. Python:如何獲得PyQt5中選定文件的文件大小?
- 4. 如何獲取文件夾的大小?
- 5. 如何從C#中的httpwebrequest獲取文件夾大小(Winform)
- 6. 如何刪除文件大小小於某個特定大小的文件夾中的所有文件(字節)
- 7. 文件總大小和子文件夾
- 8. 如何反覆獲得FTP文件夾的大小
- 9. pysftp:如何獲得遠程文件夾的大小
- 10. 如何在Windows中使用C獲取文件夾大小?
- 11. 如何在C#中獲取文件夾大小?
- 12. 如何獲取特定文件大小的音頻文件?
- 13. 調整圖像大小以獲得特定的最大值。文件大小
- 14. 獲取文件夾大小
- 15. 如何創建特定大小的文本文件C++
- 16. 如何獲得文件大小
- 17. 定位在特定的文件夾中的特定文件c#
- 18. 如何獲取C文件的大小?
- 19. 的Java獲得多個目錄中的文件夾大小[]
- 20. 如何獲得文件大小小於500mb的文件列表?
- 21. 如何獲得cpp中特定向量行的大小?
- 22. 確定文件夾大小
- 23. 如何在Linux中列出目錄中文件和文件夾的總大小?
- 24. 文件夾中所有文件類型的總大小
- 25. c#如何在客戶端機器上獲得總RAM大小
- 26. 使用find&du獲取文件夾的總大小
- 27. 如何在獲取所有文件大小的相同函數中獲得總目錄大小? (Python)
- 28. OSX:如何獲得給定文件系統的最大文件大小
- 29. 如何複製文件總管特定文件夾咕嚕
- 30. 獲得文件大小