#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. Это было именно то, что я искал !! 😉 Большое спасибо (всем)