как получить свойства файла? - PullRequest
7 голосов
/ 22 октября 2011

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

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

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

'WindowsFormsApplication2.vshost.exe' (управляемая (v4.0.30319)): загружено 'C: \ Windows \ Microsoft.Net \ Assembly \ GAC_MSIL \ WindowsBase \ v4.0_4.0.0.0__31bf3856ad364e35 \ WindowsBase.dll ', пропущены символы загрузки.Модуль оптимизирован и включена опция отладчика «Просто мой код».Программа «[6300] WindowsFormsApplication2.vshost.exe: трассировка программы» завершила работу с кодом 0 (0x0).Программа '[6300] WindowsFormsApplication2.vshost.exe: Managed (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.FullName.exist) {Console.Write (io.ofileinfo.fullname);}?

Ответы [ 2 ]

8 голосов
/ 22 октября 2011

вы можете попробовать вот так .... используя c #

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

FileInfo oFileInfo = new FileInfo(strFilename);

if (FileName != null || FileName.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);
3 голосов
/ 22 октября 2011

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

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

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

...