сколько файлов в каталоге?
Правила форума
Пожалуйста, ознакомьтесь с правилами данного форума
Пожалуйста, ознакомьтесь с правилами данного форума
- папа Карло
- Шарманщик
- Сообщения: 8563
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
сколько файлов в каталоге?
Как посчитать число файлов в каталоге. Рекурсии в подкаталоги не надо. Просто число файлов в одном каталоге без подкаталогов.
Спасибо.
Спасибо.
-
- Пользователь
- Сообщения: 92
- Зарегистрирован: 20 фев 2003, 00:41
- Смайл
- Пользователь
- Сообщения: 135
- Зарегистрирован: 18 фев 2003, 10:38
Re: сколько файлов в каталоге?
Если в ескплорере то могу дать рецепт: В среднем средний палец накрывает три файла. Потыкайся пальцами примерно посчитаешь.папа Карло писал(а):Как посчитать число файлов в каталоге. Рекурсии в подкаталоги не надо. Просто число файлов в одном каталоге без подкаталогов.
Спасибо.
T-SQL адепт, детерменируй!
- папа Карло
- Шарманщик
- Сообщения: 8563
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
Re: сколько файлов в каталоге?
это Пете, это не мне.Смайл писал(а):Если в ескплорере то могу дать рецепт: В среднем средний палец накрывает три файла. Потыкайся пальцами примерно посчитаешь.
T-SQL адепт, детерменируй!
- Lepsik
- Житель
- Сообщения: 522
- Зарегистрирован: 17 фев 2003, 18:34
- Откуда: Berlin
- Контактная информация:
упс - поправка - кинул не чекнув
//---------------------------------------------------------------------------
set<String> listFiles(String name_folder )
{
TSearchRec sr;
String mask = name_folder + "\\*.*";
set<String> result;
if( FindFirst(mask, faAnyFile, sr) == 0)
do {
result.insert( sr.Name );
} while ( FindNext(sr) == 0 );
return result;
}
//---------------------------------------------------------------------------
set<String> listFiles(String name_folder )
{
TSearchRec sr;
String mask = name_folder + "\\*.*";
set<String> result;
if( FindFirst(mask, faAnyFile, sr) == 0)
do {
result.insert( sr.Name );
} while ( FindNext(sr) == 0 );
return result;
}
-
- Пользователь
- Сообщения: 92
- Зарегистрирован: 20 фев 2003, 00:41
В коде есть HADNLE leak. И кроме того, возвращаемый результат должен быт типа int как можно понять из условий задачи, т.е. он должен говорить
в конце . Еще, код посчитает директории вместе с файлами (включая "." и "..").
Такие вот грабли
Код: Выделить всё
// ...
return result.size() ;
}
Такие вот грабли
- папа Карло
- Шарманщик
- Сообщения: 8563
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
- Смайл
- Пользователь
- Сообщения: 135
- Зарегистрирован: 18 фев 2003, 10:38
папа Карло писал(а):нам не надо список. нам надо число. например...
"в каталоге C:\TestFolder находится 5 файлов"
Код: Выделить всё
[JScript]
function ItemsInFolder(folderspec)
{
var fso, folder;
fso = new WScript.CreateObject("Scripting.FileSystemObject");
folder = fso.GetFolder(folderspec);
if(folder)
return folder.Files.Count() + folder.Folders.Count();
return(0);
}
WScript.Echo ("number of items is " + ItemsInFolder("C:\TestFolder"));
-
- Пользователь
- Сообщения: 92
- Зарегистрирован: 20 фев 2003, 00:41
Код: Выделить всё
[Perl]
opendir(D, $d = 'C:\TestDir') || die "can't opendir $d: $!";
print scalar( grep { -f "$d/$_" } readdir(D) ), " file(s) found in $d\n" ;
closedir D;
- папа Карло
- Шарманщик
- Сообщения: 8563
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
- Смайл
- Пользователь
- Сообщения: 135
- Зарегистрирован: 18 фев 2003, 10:38
Лентяй!папа Карло писал(а):а на С или плюсах?
WIN32:
Код: Выделить всё
#include <stdio.h>
#include <io.h>
int main( int argc, char* argv[] )
{
_finddata_t fileinfo;
long counter = 0;
long h = _findfirst( argv[1], &fileinfo ); if(h == -1) return 1;
while(_findnext( h, &fileinfo ) == 0)
counter++;
_findclose(h);
printf("there are %d items like %s\n",counter,argv[1]);
return 0;
}
-
- Пользователь
- Сообщения: 92
- Зарегистрирован: 20 фев 2003, 00:41
на С говоришь? первый раз бесплатно :
Код: Выделить всё
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <tchar.h>
void add_slash( LPTSTR pszStr )
{
size_t l ;
l = _tcslen(pszStr) ;
if( l > 0 && pszStr[l-1] == _T('\\') || pszStr[l-1] == _T('/') )
return ;
_tcscat( pszStr, _T("\\") ) ;
}
int count_files( LPCTSTR pszDir )
{
TCHAR szPath[_MAX_PATH] ;
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
int nCount = 0 ;
_tcscpy( szPath, pszDir ) ;
add_slash( szPath ) ;
_tcscat( szPath, _T("*.*") ) ;
hFind = FindFirstFile( szPath, &FindFileData );
if( hFind != INVALID_HANDLE_VALUE )
{
do
{
if( 0 == (FILE_ATTRIBUTE_DIRECTORY & FindFileData.dwFileAttributes ) )
++nCount ;
} while( FindNextFile( hFind, &FindFileData ) ) ;
FindClose(hFind);
}
return nCount ;
}
void main(void)
{
TCHAR szDir[] = _T("C:\\TestDir") ;
printf( _T("%d file(s) found in %s\n"), count_files(szDir), szDir ) ;
}
-
- Пользователь
- Сообщения: 92
- Зарегистрирован: 20 фев 2003, 00:41
- папа Карло
- Шарманщик
- Сообщения: 8563
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
- папа Карло
- Шарманщик
- Сообщения: 8563
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA