Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как найти фаил и узнать его размер


Автор: NULL 1.10.2003, 12:37
Вот так пытаюсь сделать я
Код

#include <windows.h>
#include <iostream.h>

void main(){
HANDLE hFile;
WIN32_FIND_DATA FFD;
BOOL fl = FALSE;

hFile = FindFirstFile("proba.txt", &FFD);
if(hFile != INVALID_HANDLE_VALUE)
 while((!fl) || (fl != ERROR_NO_MORE_FILES)) fl = FindNextFile(hFile, &FFD);

unsigned long  ffs;
ffs = (FFD.nFileSizeLow/32) + (FFD.nFileSizeHigh/32);//тут вроде побитово смещать(как?)
cout << "file size: " << ffs << endl;
}

не находит, а если и находит то размер там странный(нужен в байтах)

Автор: Ars 1.10.2003, 12:44
Пример из MSDN
Код

void FindFileExample (void)
{
 WIN32_FIND_DATA FileData;   // Data structure describes the file found
 HANDLE hSearch;             // Search handle returned by FindFirstFile
 TCHAR szMsg[100];           // String to store the error message
 TCHAR szNewPath[MAX_PATH];  // Name and path of the file copied
 TCHAR szDirPath[] = TEXT("\\TEXTRO");

 BOOL bFinished = FALSE;

 // Create a new directory.

 if (!CreateDirectory (szDirPath, NULL))
 {
   wsprintf (szMsg, TEXT("Unable to create new directory."));
   return;
 }

 // Start searching for .txt files in the root directory.

 hSearch = FindFirstFile (TEXT("\\*.txt"), &FileData);
 if (hSearch == INVALID_HANDLE_VALUE)
 {
   wsprintf (szMsg, TEXT("No .TXT files found."));
   return;
 }

 // Copy each .txt file to the new directory and change it to
 // read-only, if it is not already read-only.

 while (!bFinished)
 {
   lstrcpy (szNewPath, szDirPath);
   lstrcat (szNewPath, TEXT("\\"));
   lstrcat (szNewPath, FileData.cFileName);

   if (CopyFile (FileData.cFileName, szNewPath, FALSE))
   {
     if (!(FileData.dwFileAttributes & FILE_ATTRIBUTE_READONLY))
     {
       SetFileAttributes (szNewPath,
               FileData.dwFileAttributes | FILE_ATTRIBUTE_READONLY);
     }
   }
   else
   {
     wsprintf (szMsg, TEXT("Unable to copy file."));

     // Your error-handling code goes here.
   }

   if (!FindNextFile (hSearch, &FileData))
   {
     bFinished = TRUE;

     if (GetLastError () == ERROR_NO_MORE_FILES)
     {
       wsprintf (szMsg, TEXT("Found all of the files."));
     }
     else
     {
       wsprintf (szMsg, TEXT("Unable to find next file."));
     }
   }
 }

 // Close the search handle.

 if (!FindClose (hSearch))
 {
   wsprintf (szMsg, TEXT("Unable to close search handle."));
 }
} // End of FindFileExample code

Автор: NULL 1.10.2003, 14:06
спасиба

Автор: mr.DUDA 1.10.2003, 22:49
ЗЫ, а ещё в MFC есть классный класс CFileFind smile.gif

Автор: Peter 2.10.2003, 12:23
А, по-моему, в ios.h есть что-то типа _findfirst, _findnext, _finddata (за последнее не ручаюсь).
Я читал хелп - и этим добром пользовался, как там написано. Все получалось.

Автор: NULL 2.10.2003, 13:02
спасиба попробую

Автор: malor 22.6.2011, 16:59
Цитата(Ars @  1.10.2003,  12:44 Найти цитируемый пост)
Пример из MSDN
Как этот пример поясняет вычисление объема по nFileSizeHigh  и nFileSizeLow ? 

Автор: xvr 23.6.2011, 10:39
Цитата(malor @ 22.6.2011,  16:59)
Цитата(Ars @  1.10.2003,  12:44 Найти цитируемый пост)
Пример из MSDN
Как этот пример поясняет вычисление объема по nFileSizeHigh  и nFileSizeLow ?

Думаю, что за 8 лет ТС все же вычислил то, что ему было надо   smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)