Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ExeiLj
9 / 9 / 1
Регистрация: 02.08.2012
Сообщений: 128
#1

Чтение свойтв (тех данных) файла - C++

02.08.2012, 18:29. Просмотров 497. Ответов 8
Метки нет (Все метки)

Здравствуйте.

Подскажите пожалуйста, как считывать все тех данные файлов? (они же свойства файла)

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

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

Подскажите как?

Добавлено через 6 минут
Может есть примеры или книги как создать свой проводник?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2012, 18:29     Чтение свойтв (тех данных) файла
Посмотрите здесь:

Чтение данных из файла - C++
Вот программа запись и чтение из файла. Сначала записываем данные о студенте(фамилия, год рождения, пол), а потом нужно считать из файла...

Чтение данных из файла в структуру - C++
Необходимо считать данные из блокнота, а в последствии работать с ними,написала,но не работает, помогите , пожалуйста. int...

Чтение данных из файла в структуру - C++
Нужно считать данные с блокнота и поработать с ними. программу написала, но подчеркивает mass что не так #include "stdafx.h" ...

Чтение данных из текстового файла - C++
Помогите пожалуйста! Питаюсь создать консольную програму и никак не пойму как прочесть из файла, ну например: есть файл noname.txt и в ньом...

Выборочное чтение данных из файла - C++
Простите за идиотский вопрос, но вся работа застопорилась, потому что никак не могу разобраться :( Есть программа, написанная,...

Чтение данных из файла в вектор - C++
Доброго времени суток. Никак не могу разобраться, поиск по форуму не помог. У меня есть функция сохранения вектора в файл if...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
edward_jonson
158 / 158 / 25
Регистрация: 23.02.2011
Сообщений: 392
02.08.2012, 20:24     Чтение свойтв (тех данных) файла #2
это всё упирается в WinApi, пример для размера:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <windows.h>
 
int main()
{
    HANDLE myFileHandle = CreateFile("C:\\file.txt", // Если что, можно брать файл с любым расширением, не только txt
                                GENERIC_READ,
                                0,
                                NULL,
                                OPEN_EXISTING,
                                FILE_ATTRIBUTE_NORMAL,
                                NULL);
 
    DWORD size = GetFileSize(myFileHandle, NULL);
 
    printf("%d Bytes", size);
 
    CloseHandle (myFileHandle);
 
}
edward_jonson
158 / 158 / 25
Регистрация: 23.02.2011
Сообщений: 392
02.08.2012, 20:29     Чтение свойтв (тех данных) файла #3
Прямая дорога тебе на MSDN. Вот, например, ф-я для получения времени создания\изменения - http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx Ищи всё там.
Прикрепил к предыдущему посту
Миниатюры
Чтение свойтв (тех данных) файла  
ExeiLj
9 / 9 / 1
Регистрация: 02.08.2012
Сообщений: 128
02.08.2012, 23:27  [ТС]     Чтение свойтв (тех данных) файла #4
Спасибо, но во первых возникли сложности с переводом DWORD в String, чтобы вывести в Label.
Во вторых криво читает большие файлы...
edward_jonson
158 / 158 / 25
Регистрация: 23.02.2011
Сообщений: 392
03.08.2012, 03:49     Чтение свойтв (тех данных) файла #5
По поводу перевода DWORD в String - DWORD = unsigned long, почему сложности с переводом целого числа в строку? Способов куча - itoa, IntToStr - для билдера(или что там у вас), даже обычное приведение типов должно подойти (с AnsiString прокатывало).
По поводу больших файлов - данный метод
C
1
2
    DWORD size = GetFileSize(myFileHandle, NULL);
    printf("%d Bytes", size);
работоспособен для файлов < 4Гб (4294967295 - максимальное значение для unsigned long, что в байтах = (4Гбайт - 1 байт) ) ДА И КСТАТИ! следует поменять тут: printf("%lu Bytes", size);
Итак, ежели у вас файл >= 4Гб, тогда следует видоизменить немного способ:
C
1
2
DWORD sizeH = 0;
DWORD sizeL = GetFileSize(myFileHandle, &sizeH);
Тогда уже размер файла будет храниться в 2-х переменных - из-за того, что в DWORD может храниться 32 бита, размер файла >= 4Гб туда не поместится. И старшие 32 бита размера файла будут в sizeH, младшие - в sizeL.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.08.2012, 08:11     Чтение свойтв (тех данных) файла #6
Если знать, поля файла, где это записано, то можно и без WinApi всё это извлечь (и, если нужно, переписать). Тут на форуме была тема перезаписи заголовков .bmp файла. Размер файла можно так узнать. Открывается в бинарном режиме для чтения. Курсор будет на начале файла. Перемещение курсора в конец (seekg(ios::end)), tellg() выдаст количество байтов.
MrCold
854 / 752 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
03.08.2012, 10:00     Чтение свойтв (тех данных) файла #7
Цитата Сообщение от ExeiLj Посмотреть сообщение
в текстбоксе пишу полный путь к файлу, и хочу получить все эти тех данные...
Общие свойства :
CLI код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
 
        
if  ( textBox1->Text != "")
 
    {
      String^ path =  textBox1->Text;
 
           if (  System::IO::File::Exists( path ) )
      {
 
             System::IO::FileInfo^ file = gcnew System::IO::FileInfo( path );
 
             label1->Text = (
 
                   "Датa и время создания файла"            + file->CreationTime + "\r\n" 
                 + "Дата последней записи :  "              + file->LastWriteTime + "\r\n" 
                 + "Расположение : "                        + file->FullName + "\r\n" 
                 + "Тип файла: "                               + file->Attributes.ToString() + "\r\n" 
                 + "Размер файла : "                        + file->Length + " байт" + "\r\n"  
 
                             );
      }
 
           else 
 
               label1->Text = "Файл не найден";
         }
 
       else 
 
               label1->Text = "Путь к файлу не введен .";
         
         }
ExeiLj
9 / 9 / 1
Регистрация: 02.08.2012
Сообщений: 128
03.08.2012, 16:51  [ТС]     Чтение свойтв (тех данных) файла #8
Цитата Сообщение от edward_jonson Посмотреть сообщение
По поводу перевода DWORD в String - DWORD = unsigned long, почему сложности с переводом целого числа в строку? Способов куча - itoa, IntToStr - для билдера(или что там у вас), даже обычное приведение типов должно подойти (с AnsiString прокатывало).
Сколько не рыл инет, найти нормального решения не смог. А IntToStr билдер пишет только для инт и инт64...

Добавлено через 10 минут
Цитата Сообщение от MrCold Посмотреть сообщение
System::IO::File::Exists( path )
Пишет IO не часть System...
Я так понял это связано .NET ...

Цитата Сообщение от MrCold Посмотреть сообщение
String^ path = textBox1->Text;
что значит ^ ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2012, 17:57     Чтение свойтв (тех данных) файла
Еще ссылки по теме:

Чтение базы данных из файла - C++
База Данных “Студенты”. Данные БД хранятся в файле. Структура БД: - № (номер элемента) - ФИО студента - Дата рождения...

Чтение данных структуры из файла - C++
Здравствуйте. Объясните как можно записать информацию с файла в программу? #include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;algorithm&gt; ...

Чтение данных из произвольного файла с разделителями - C++
Помогите пожалуйста. Нужно написать программу консольного типа, реализующую: 1. Чтение файла 2. Вывод содержимого на экран 3....

Чтение и сохранение данных из конфигурационного файла - C++
Привет всем!! Есть программа на C с конфигурационным файлом!!! Надо сделать так чтобы при старте программы конфиг файл читался один раз,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
MrCold
854 / 752 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
03.08.2012, 17:57     Чтение свойтв (тех данных) файла #9
Цитата Сообщение от ExeiLj Посмотреть сообщение
Пишет IO не часть System...
Я так понял это связано .NET ...
Kод - для VisualStudio C++/CLI Windows Forms
Yandex
Объявления
03.08.2012, 17:57     Чтение свойтв (тех данных) файла
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru