C #: Получить размер мягкого связанного файла - PullRequest
0 голосов
/ 20 октября 2011

Я ищу простой способ получить размер файла softlink.

Класс FileInfo возвращает 0 байтов каждый раз.

Как узнать реальный размер файла?

Ответы [ 2 ]

0 голосов
/ 20 октября 2011

Проверьте эту ссылку http://blogs.msdn.com/b/oldnewthing/archive/2010/02/12/9962359.aspx

Функции, такие как GetFileAttributes и FindFirstFile, когда их просят предоставить информацию о символической ссылке, возвращает информацию о сама ссылка, а не место назначения ссылки. Если вы используете Функция FindFirstFile, вы можете сказать, что у вас есть символическая ссылка потому что атрибуты файла будут иметь Установлен флаг FILE_ATTRIBUTES_REPARSE_POINT и член dwReserved0 будет содержать специальное значение IO_REPARSE_TAG_SYMLINK.

Хорошо, отлично, теперь я знаю, что у меня есть символическая ссылка, но что, если я хочу получить информацию о цели ссылки?

Например, я хочу узнать размер цели ссылки, время ее последнего изменения и ее имя. к Сделав это, вы откроете символическую ссылку. Менеджер ввода / вывода разыменовывает символическая ссылка и дает вам ссылку на ссылку назначения. Вы можете затем вызвать такие функции, как GetFileSize, GetFileInformationByHandleEx или GetFinalPathNameByHandle для получения информации о символической ссылке цель.

Вот пример кода с демо http://www.codeproject.com/KB/vista/ReparsePointID.aspx

0 голосов
/ 20 октября 2011

Вам нужно открыть файл и узнать его размер через функцию GetFileSize.

...