Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запись и чтение файла dat 
:(
    Опции темы
volery
  Дата 17.12.2012, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 2.4.2010

Репутация: нет
Всего: нет



Данная программа ищет файлы с расширением *.txt и выводит их имена и даты создания, и создаёт каталог FIND и файл find.dat. Как сделать что бы информация об именах и датах создания файлов txt записывалась в find.dat и потом посмотреть этот список? Не могу понять как грамотно записать

Код

#include <windows.h>
#include <string.h>
#include <stdio.h>
#include<iostream>
using namespace std;
int main(int argc, char* argv[])
{
HANDLE hFile;
WIN32_FIND_DATA lpFile;
SYSTEMTIME lpSys;
int i=0,j=0;
SetCurrentDirectory("C:\\Users\\user\\Desktop\\file");
hFile=FindFirstFile(("*.txt*"),&lpFile);
if(hFile!=INVALID_HANDLE_VALUE)
{
if (lpFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
printf("directory\t");
i++;
}
else
{
printf("file\t\t"); 
j++;
}
  FileTimeToSystemTime(&lpFile.ftLastWriteTime, &lpSys);
printf("%s\t%d.%d.%d  %d:%d\n",lpFile.cFileName,lpSys.wDay,
      lpSys.wMonth,lpSys.wYear, lpSys.wHour, lpSys.wMinute);
  }
else
printf("no");

while(FindNextFile(hFile, &lpFile))
{
if (lpFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
printf("directory\t");
i++;
}
else
{
printf("file\t\t"); 
j++;
}
  FileTimeToSystemTime(&lpFile.ftLastWriteTime, &lpSys);
printf("%s\t\t%d.%d.%d  %d:%d\n",lpFile.cFileName,lpSys.wDay,
      lpSys.wMonth,lpSys.wYear, lpSys.wHour, lpSys.wMinute);
}


FindClose(hFile);
printf("count fo directories %d\t count of files %d\n",i,j);
scanf;





Продолжение программы то что не могу сделать:





Код

CreateDirectory ("C:\\FIND", NULL);
 hFile =CreateFile("C:\\FIND\\find.dat",GENERIC_WRITE,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
DWORD nb;  

{
WriteFile(hFile,&i,sizeof(int),&nb,NULL);
}
CloseHandle(hFile);
hFile = CreateFile("C:\\FIND\\find.dat",GENERIC_READ,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
  
int m;
ReadFile(hFile,&m,sizeof(int),&nb,NULL);
while (nb!=0)
{
cout << m<< endl;
ReadFile(hFile,&m,sizeof(int),&nb,NULL);
}
CloseHandle(hFile);
 system( "pause" );
 return 0;

system( "pause" );

}

PM MAIL   Вверх
feodorv
Дата 17.12.2012, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(volery @  17.12.2012,  22:37 Найти цитируемый пост)
find.dat

Вам обязательно в бинарном виде? Почему бы не записывать построчно в виде:
Код

<дата создания> <имя файла>\r\n



--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
volery
Дата 17.12.2012, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 2.4.2010

Репутация: нет
Всего: нет



Да только в бинарном виде. У меня записалось в файл dat сколько всего нашлось файлов txt  и почесть получилось. Но что бы записались названия и даты ни как...
PM MAIL   Вверх
feodorv
Дата 17.12.2012, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(volery @  17.12.2012,  23:37 Найти цитируемый пост)
Да только в бинарном виде.

Ну что ж. 

Дата имеет фиксированный размер, а вот имя - нет, поэтому рядом с именем придётся держать его длину, либо же длину всей записи (дата+имя). Читать соответственно - сначала длину, потом имя в соответствии с этой длиной.

Можно ввести записи фиксированной длины (всё равно длина имени ограничена 260-ю символами), правда, это сильно раздует файл find.dat...


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
volery
Дата 17.12.2012, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 2.4.2010

Репутация: нет
Всего: нет



да уж, думал будет проще 
PM MAIL   Вверх
volery
Дата 18.12.2012, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 2.4.2010

Репутация: нет
Всего: нет



Может кто то делал что то похожее? Что бы проста данные которые отображались в консоле записывались в какой либо файл 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0625 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.