как получить свойства файла?

#c# #taglib #windows-shell #windows-api-code-pack #getproperties

#c# #taglib #windows-оболочка #windows-api-code-pack #getproperties

Вопрос:

Мне нужно приложение, которое отображает некоторые свойства файла медиафайла, если таковые имеются, например (не знаю точных английских слов, используемых для этого в Windows) Имя файла, длина / длительность, тип файла (.avi .mp3 и т.д.) Я пробовал taglib и windowsapishell, но не получил рабочего результата (ссылки хорошие)

 ShellFile so = ShellFile.FromFilePath(file);
so.Properties.System.(everythingIwant)
 

показывает мне много свойств файла, которые я хочу отобразить, но я не могу заставить его работать
Пример ошибки:

‘WindowsFormsApplication2.vshost.exe ‘ (Управляемый (v4.0.30319)): Загружен ‘C:WindowsMicrosoft.NetassemblyGAC_MSILWindowsBasev4.0_4.0.0.0__31bf3856ad364e35WindowsBase.dll’ , Пропущены символы загрузки. Модуль оптимизирован, и включена опция отладчика «Только мой код». Программа ‘[6300] WindowsFormsApplication2.vshost.exe : Трассировка программы завершилась с кодом 0 (0x0). Программа ‘[6300] WindowsFormsApplication2.vshost.exe : Управляемый (v4.0.30319)’ завершается с кодом 0 (0x0).

что-то простое, например

 var thing = so.Properties.System.FileName.Description;
Console.WriteLine(thing);
 

не будет работать

Я знаю немного программирования на Java и PHP, но я совершенно новичок в C#


Особая благодарность @marr75 и @errorstacks !

один последующий вопрос: я сделал это, и это работает

 class Program
{
    static void Main(string[] args)
    {   
        string file = "E:/Dump/Shutter Island.avi";

        FileInfo oFileInfo = new FileInfo(file);
        Console.WriteLine("My File's Name: ""   oFileInfo.Name   """);
        DateTime dtCreationTime = oFileInfo.CreationTime;
        Console.WriteLine("Date and Time File Created: "   dtCreationTime.ToString());
        Console.WriteLine("myFile Extension: "   oFileInfo.Extension);
        Console.WriteLine("myFile total Size: "   oFileInfo.Length.ToString());
        Console.WriteLine("myFile filepath: "   oFileInfo.DirectoryName);
        Console.WriteLine("My File's Full Name: ""   oFileInfo.FullName   """);

    }               
}
 

но я хочу, чтобы он предоставлял мне информацию только в том случае, если информация существует.
Я видел

    **Exists**   Gets a value indicating whether a file exists. (Overrides FileSystemInfo.Exists.)
 

Но как мне использовать эту функцию, я думаю, не нравится, если (io.ofileinfo.Полное имя.существует) {Консоль.Написать(io.ofileinfo.fullname);} ?

Комментарии:

1. Программа, похоже, успешно выполняется. Представленное вами сообщение не является сообщением об ошибке, а просто обычной диагностикой. Вы забыли вывести найденные значения? Или, может быть, вам просто нужно установить точку останова в последней строке вашего Main ?

2. Система .net. Класс FileInfo , вероятно, предоставит многие из необходимых вам результатов. В нем не будет такой информации, как продолжительность (медиафайлов), но вы можете найти здесь более базовую информацию, которая поможет вам перейти к рабочему приложению.

3. thecodeisart.blogspot.com/2008/11/file-attributes-with-c.html Если вы хотите получить длину аудиофайла, то взгляните сюда social.msdn.microsoft.com/forums/en-US/Vsexpressvcs/thread /…

4. Я искал вкладку сведений в свойствах файла, и кто-то может сделать это, используя объект, возвращенный из -> FileVersionInfo.GetVersionInfo(path);

Ответ №1:

При просмотре или открытии файла, чтобы получить его имя, класс FileInfo оснащен свойством Name . Вот пример кода:

 FileInfo oFileInfo = new FileInfo(strFilename);

if (oFileInfo != null || oFileInfo.Length == 0)
{
   MessageBox.Show("My File's Name: ""   oFileInfo.Name   """);
   // For calculating the size of files it holds.
   MessageBox.Show("myFile total Size: "   oFileInfo.Length.ToString());
}
 

Вы можете проверить это следующим образом:

 if (!oFileInfo.Exists)
{
    throw new FileNotFoundException("The file was not found.", FileName);
}
 

Чтобы узнать, что это за значения даты и времени, вы можете получить доступ к свойству Информации о файловой системе, используя:

 DateTime dtCreationTime = oFileInfo.CreationTime;
MessageBox.Show("Date and Time File Created: "   dtCreationTime.ToString());
 

Чтобы узнать расширение файла, вы можете получить доступ к значению свойства FileSystemInfo.Extension:

 MessageBox.Show("myFile Extension: "   oFileInfo.Extension);
 

Комментарии:

1. Это было именно то, что я искал !! 😉 Большое спасибо (всем)

Ответ №2:

Вот ссылка с информацией о просмотре атрибутов.

Кроме того, класс FileInfo — это то, что вы, вероятно, хотите использовать.

Какие еще виды недвижимости вы рассматриваете?

Комментарии:

1. Это было именно то, что я искал !! 😉 Большое спасибо (всем)