C#:获取软链接文件的大小

时间:2011-10-20 07:01:51

标签: c# filesize symlink

我正在寻找一种获取软链接文件大小的简单方法。

FileInfo类每次返回0个字节。

如何获得真实的文件大小?

4 个答案:

答案 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();