2010-09-23 16 views
1

在.net中獲取文件長度的最快方法是什麼?在.net中獲取文件長度的最快方式是什麼?

注意:我正在通過網絡共享訪問文件。

到目前爲止,我有

  • 爲1.5ms FileInfo.Length
  • .5ms的FileStream()。長度
+2

出於好奇,有什麼用FileInfo的錯? – 2010-09-23 02:50:34

+3

是的,如果你解釋爲什麼你不能使用FileInfo,人們更可能給你正在尋找的答案 – Luxspes 2010-09-23 02:52:32

+0

@Scott @Luxspes我已經重新提出了這個問題來表達我的真實意圖。 – Simon 2010-09-23 03:12:06

回答

1

從Adi_aks衍生回答

public static long GetFileLength(string path) 
{ 
    using (var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read)) 
    { 
     return fileStream.Length; 
    } 
} 
+3

爲什麼選擇投票? – Simon 2010-10-04 02:31:39

+0

我添加了一個'Catch ex作爲異常返回-1結束嘗試結束函數'(哎呀...我的VB顯示..)我用來做一個尾巴的代碼。像魅力一樣工作,似乎比使用FileInfo對象更精簡。 – edhubbell 2013-01-09 13:48:03

0

爲什麼不直接使用FileInfo.Length

你可以P /調用的Win32 API:的CreateFile,GetFileSizeEx和CloseHandle的,如果你真的想。

+0

我已經重新提出這個問題來表達我的真實意圖。 – Simon 2010-09-23 03:13:25

2
long size = File.OpenRead(path).Length; 
+0

Server.MapPath()只適用於ASP.NET,我不確定找到文件大小的最快方法是不必要地在其上打開一個流(順便說一下,這個代碼也沒有關閉它) – 2010-09-23 03:47:53

+0

更好還沒有做 使用(var fileStream =新的FileStream(路徑,FileMode.Open,FileAccess.Read,FileShare.Read)) { \t var length = fileStream.Length; } – Simon 2010-09-23 08:10:44

1

你可以的PInvoke的或用FindFirstFile API GetFileAttributesEx電話,但好像很多額外的工作,FileInfo類是已經爲你做。否則我想知道同樣的事情斯科特是:爲什麼你不想使用FileInfo?

相關問題