आपको C # में फ़ाइल का आकार कैसे मिलता है?


307

मुझे C # का उपयोग करके फ़ाइल का आकार प्राप्त करने के लिए एक तरीका चाहिए, और डिस्क पर आकार नहीं। यह कैसे हो सकता है?

वर्तमान में मेरे पास यह लूप है

foreach (FileInfo file in downloadedMessageInfo.GetFiles())
{
    //file.Length (will this work)
}

क्या यह डिस्क या साइज़ को डिस्क पर लौटाएगा?


संबंधित, लेकिन VB.NET के लिए: VB.NET में फ़ाइल आकार का निर्धारण ,
पीटर मोर्टेंसन

जवाबों:


324

FileInfo.Length फ़ाइल की लंबाई, बाइट्स में (डिस्क पर आकार नहीं) लौटाएगा, इसलिए यह वही है जो आप खोज रहे हैं, मुझे लगता है।


4
यह भी: social.msdn.microsoft.com/Forums/en-US/Vsexpressvcs/thread/… यह डिस्क पर आकार "अन्य मान" प्राप्त करने के तरीके के बारे में चर्चा है।
Marcin Deptuła

386

यदि आपके पास इनपुट के रूप में पहले से ही एक फ़ाइल पथ है, तो यह वह कोड है जिसकी आपको आवश्यकता है:

long length = new System.IO.FileInfo(path).Length;

1
इसे आज़माएँ / पकड़ें ब्लॉक के साथ घेरें और यहाँ वर्णित सभी संभावित अपवादों की जाँच करें : SecurityException, UnauthorizedAccessException, PathTooLongException, NotSupportedException और - आपके उपयोग के मामले पर निर्भर - ArgumentNullException और ArgumentException
huha

37

FileInfo.Lengthचाल (प्रति MSDN यह "" [g] बाइट्स में, वर्तमान फ़ाइल का "प्रति" करेगा) आम I / O कार्यों पर MSDN पर एक अच्छा पृष्ठ है।




4

डिस्क पर आकार भिन्न हो सकता है, यदि आप फ़ाइल को किसी अन्य फ़ाइल सिस्टम (FAT16, NTFS, EXT3, आदि) में ले जाते हैं

जैसा कि अन्य उत्तरदाताओं ने कहा है, यह आपको बाइट्स में आकार देगा, डिस्क पर आकार नहीं।


0

FileInfo वर्ग की लंबाई संपत्ति फ़ाइल का आकार (डिस्क पर आकार नहीं) लौटाती है। यदि आप एक लंबे समय बाइट मान के बजाय एक स्वरूपित फ़ाइल आकार (यानी 15 KB) चाहते हैं , तो आप CSharpLib का उपयोग कर सकते हैं , एक पैकेज जो मैंने बनाया है, जो FileInfo वर्ग में अधिक कार्यक्षमता जोड़ता है। यहाँ एक उदाहरण है:

using CSharpLib;
FileInfo info = new FileInfo("sample.txt");
Console.WriteLine(info.FormatBytes());  // Output: 15 MB
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.