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

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

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

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

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

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

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

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

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

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

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

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

Преобразование текстового файла в двоичный и чтение исходных данных из двоичного файла. - C++
#include<iostream> #include<fstream> #include<locale.h> #include<iomanip> #include <cstdlib> using namespace std; struct...

Чтение из файла определённого места и сортировка данных исходя из этих данных - C++
Есть некий текстовый документ, содержащий информацию о посещении сайта в формате: Например 12.5.76.200 04:23 Mon Цель:...

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

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

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

8
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);
 
}
1
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 Ищи всё там.
Прикрепил к предыдущему посту
1
Миниатюры
Чтение свойтв (тех данных) файла  
ExeiLj
9 / 9 / 1
Регистрация: 02.08.2012
Сообщений: 128
02.08.2012, 23:27  [ТС] #4
Спасибо, но во первых возникли сложности с переводом DWORD в String, чтобы вывести в Label.
Во вторых криво читает большие файлы...
0
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.
1
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.08.2012, 08:11 #6
Если знать, поля файла, где это записано, то можно и без WinApi всё это извлечь (и, если нужно, переписать). Тут на форуме была тема перезаписи заголовков .bmp файла. Размер файла можно так узнать. Открывается в бинарном режиме для чтения. Курсор будет на начале файла. Перемещение курсора в конец (seekg(ios::end)), tellg() выдаст количество байтов.
1
MrCold
855 / 753 / 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 = "Путь к файлу не введен .";
         
         }
1
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;
что значит ^ ?
0
MrCold
855 / 753 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
03.08.2012, 17:57 #9
Цитата Сообщение от ExeiLj Посмотреть сообщение
Пишет IO не часть System...
Я так понял это связано .NET ...
Kод - для VisualStudio C++/CLI Windows Forms
0
03.08.2012, 17:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2012, 17:57
Привет! Вот еще темы с ответами:

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

Чтение данных из файла - C++
У меня такая проблема, мне дан бинарный файл, где записаны числа типа float. Мне необходимо их оттуда прочитать. Но никак не получается((...

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

Чтение данных из файла - C++
в общем у меня есть файл. в нем с начала идет строка указывающая путь к некому файлу. потом разношерстные циферки, каким образом мне...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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