ฉันต้องการวิธีรับขนาดของไฟล์โดยใช้ C # ไม่ใช่ขนาดของดิสก์ เป็นไปได้อย่างไร?
ขณะนี้ฉันมีวงนี้
foreach (FileInfo file in downloadedMessageInfo.GetFiles())
{
//file.Length (will this work)
}
สิ่งนี้จะคืนขนาดหรือขนาดของดิสก์หรือไม่?
ฉันต้องการวิธีรับขนาดของไฟล์โดยใช้ C # ไม่ใช่ขนาดของดิสก์ เป็นไปได้อย่างไร?
ขณะนี้ฉันมีวงนี้
foreach (FileInfo file in downloadedMessageInfo.GetFiles())
{
//file.Length (will this work)
}
สิ่งนี้จะคืนขนาดหรือขนาดของดิสก์หรือไม่?
คำตอบ:
FileInfo.Length
จะคืนค่าความยาวของไฟล์เป็นไบต์ (ไม่ใช่ขนาดบนดิสก์) ดังนั้นนี่คือสิ่งที่คุณต้องการ
หากคุณมีเส้นทางของไฟล์เป็นอินพุตนี่เป็นรหัสที่คุณต้องการ:
long length = new System.IO.FileInfo(path).Length;
FileInfo.Length
จะทำเคล็ดลับ (ต่อ MSDN มัน "[g] ets ขนาดในหน่วยไบต์ของไฟล์ปัจจุบัน") มีหน้าดีใน MSDN ในงาน I / O ทั่วไป
MSDN FileInfo.Lengthบอกว่ามันเป็น "ขนาดของไฟล์ปัจจุบันเป็นไบต์"
การค้นหาโดยทั่วไปของ Google ของฉันสำหรับสิ่งนี้คือ: msdn FileInfo
ส่งคืนความยาวเนื้อหาไฟล์
ขนาดของดิสก์อาจแตกต่างกันถ้าคุณย้ายไฟล์ไปยังระบบไฟล์อื่น (FAT16, NTFS, EXT3 ฯลฯ )
ดังที่ผู้ตอบคนอื่น ๆ ได้กล่าวมาสิ่งนี้จะทำให้คุณมีขนาดเป็นไบต์ไม่ใช่ขนาดของดิสก์
คุณสมบัติความยาวของคลาส FileInfo ส่งคืนขนาดของไฟล์ (ไม่ใช่ขนาดบนดิสก์) หากคุณต้องการขนาดไฟล์ที่จัดรูปแบบ (เช่น 15 KB) แทนที่จะเป็นค่าไบต์แบบยาวคุณสามารถใช้CSharpLib ได้แพคเกจที่ฉันทำซึ่งเพิ่มฟังก์ชั่นเพิ่มเติมให้กับคลาส FileInfo นี่คือตัวอย่าง:
using CSharpLib;
FileInfo info = new FileInfo("sample.txt");
Console.WriteLine(info.FormatBytes()); // Output: 15 MB