无需使用System.IO.FileInfo即可获取文件大小?

问题描述 投票:13回答:6

是否有可能完全不用C System.IO.FileInfo就可以用C#获得文件的[[大小?]​​>我知道您可以分别使用Path.GetFileName(yourFilePath)Path.GetExtension(yourFilePath)来获得名称和扩展名之类的其他信息,但是显然不能获得文件大小吗?是否有另一种方法可以不使用System.IO.FileInfo而获得

文件大小

这样做的唯一原因是,如果我是对的,FileInfo会获取比我真正需要的更多的信息,因此,如果我唯一需要的是文件的大小,那么收集所有这些FileInfo的时间会更长。有没有更快的方法?

是否可以完全不使用System.IO.FileInfo来获得C#中文件的大小?我知道您可以通过使用Path.GetFileName(yourFilePath)和Path获得其他名称和扩展名。...

c# filepath filesize fileinfo
6个回答
8
投票
我使用这两种方法进行了基准测试:

public static uint GetFileSizeA(string filename) { WIN32_FIND_DATA findData; FindFirstFile(filename, out findData); return findData.nFileSizeLow; } public static uint GetFileSizeB(string filename) { IntPtr handle = CreateFile( filename, FileAccess.Read, FileShare.Read, IntPtr.Zero, FileMode.Open, FileAttributes.ReadOnly, IntPtr.Zero); long fileSize; GetFileSizeEx(handle, out fileSize); CloseHandle(handle); return (uint) fileSize; }


5
投票
[从我做的简短测试中,我发现使用FileStream的速度平均比使用Pete的GetFileSizeB慢1毫秒(在网络共享上花了21毫秒……)。就个人而言,我更愿意在BCL限制之内。

3
投票
根据this comment

3
投票

0
投票

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.