我正在寻找一种获取软链接文件大小的简单方法。
FileInfo类每次返回0个字节。
如何获得真实的文件大小?
答案 0 :(得分:1)
这适用于符号链接:
long thisFileSize;
using (Stream thisFileStream = File.OpenRead(fullPathToFile))
thisFileSize = thisFileStream.Length;
答案 1 :(得分:0)
您需要打开文件并知道其大小与GetFileSize函数有关。
答案 2 :(得分:0)
点击此链接http://blogs.msdn.com/b/oldnewthing/archive/2010/02/12/9962359.aspx
当被要求时,像GetFileAttributes和FindFirstFile这样的函数 提供有关符号链接的信息,返回有关的信息 链接本身而不是链接目的地。如果你使用 FindFirstFile函数,你可以告诉你有一个符号链接 因为文件属性会有 FILE_ATTRIBUTES_REPARSE_POINT标志设置和dwReserved0成员 将包含特殊值IO_REPARSE_TAG_SYMLINK。
好的,很好,所以现在我知道我有一个符号链接,但是如果我想了解链接目标的信息呢?
例如,我想知道链接目标的大小,其上次修改时间及其名称。至 这样做,你打开符号链接。 I / O管理器取消引用 符号链接,为您提供链接目标的句柄。您可以 然后调用GetFileSize,GetFileInformationByHandleEx等函数 GetFinalPathNameByHandle以获取有关符号链接的信息 目标
以下是一些带有演示http://www.codeproject.com/KB/vista/ReparsePointID.aspx
的实际代码答案 3 :(得分:0)
这是我的方法,添加了FileShare参数,即使文件正在使用,仍然可以打开获取长度。
using var fs = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
size = fs.Length;
fs.Close();