fileName işlevleri ara
Bu işlevler, belirtilen dosya adlarını arar ve aramaları kapatır:
Açıklamalar
işlevi, _findfirst
bağımsız değişkende filespec
belirtilen dosyayla eşleşen bir dosya adının ilk örneği hakkında bilgi sağlar. Konak işletim sistemi tarafından desteklenen joker karakterlerin herhangi bir bileşiminde kullanabilirsiniz filespec
.
İşlevler dosya bilgilerini içinde tanımlanan bir _finddata_t
yapıda IO.h
döndürür. Ailedeki çeşitli işlevler yapı üzerinde _finddata_t
birçok varyasyon kullanır. Temel _finddata_t
yapı aşağıdaki öğeleri içerir:
unsigned attrib
Dosya özniteliği.
time_t time_create
Dosya oluşturma zamanı (-1L
FAT dosya sistemleri için). Bu süre UTC biçiminde depolanır. Yerel saate dönüştürmek için kullanın localtime_s
.
time_t time_access
Son dosya erişiminin zamanı (-1L
FAT dosya sistemleri için). Bu süre UTC biçiminde depolanır. Yerel saate dönüştürmek için kullanın localtime_s
.
time_t time_write
Dosyaya son yazma zamanı. Bu süre UTC biçiminde depolanır. Yerel saate dönüştürmek için kullanın localtime_s
.
_fsize_t size
Dosyanın bayt cinsinden uzunluğu.
char name
[ _MAX_PATH
] NULL
-yol olmadan eşleşen dosya veya dizinin sonlandırılan adı.
FAT sistemi gibi bir dosyanın oluşturulmasını ve son erişim zamanlarını desteklemeyen dosya sistemlerinde time_create
ve time_access
alanları her zaman -1L
olur.
_MAX_PATH
260 bayt olarak tanımlanır Stdlib.h
.
Bulma işlemini sınırlamak için hedef öznitelikleri (örneğin _A_RDONLY
) belirtemezsiniz. Bu öznitelikler, yapının alanında döndürülür attrib
ve aşağıdaki değerlere sahip olabilir (içinde tanımlanmıştırIO.h
)._finddata_t
Kullanıcılar bu özniteliklerin alan için attrib
mümkün olan tek değer olmasına güvenmemelidir.
_A_ARCH
Arşiv. Dosya her değiştirildiğinde ve komutu tarafından BACKUP
temizlendiğinde ayarlayın. Değer: 0x20
.
_A_HIDDEN
Gizli dosya. seçeneğini kullanmadığınız /AH
sürece komutuyla DIR
sık sık görülmez. Bu özniteliğe sahip normal dosyalar ve dosyalar hakkındaki bilgileri döndürür. Değer: 0x02
.
_A_NORMAL
Normal. Dosyada başka öznitelik ayarlanmadı ve kısıtlama olmadan okunabilir veya yazılabilir. Değer: 0x00
.
_A_RDONLY
Salt okunur. Dosya yazmak için açılamıyor ve aynı ada sahip bir dosya oluşturulamıyor. Değer: 0x01
.
_A_SUBDIR
Altdizin. Değer: 0x10
.
_A_SYSTEM
Sistem dosyası. veya /A:S
seçeneği kullanılmadığı sürece /A
normalde komutuyla DIR
görülmez. Değer: 0x04
.
_findnext
, daha önceki bir çağrısında _findfirst
belirtilen bağımsız değişkenle filespec
eşleşen bir sonraki adı (varsa) bulur. bağımsız değişkeni, fileinfo
önceki çağrısı tarafından başlatılan bir yapıya _findfirst
işaret etmelidir. Eşleşme bulunursa, fileinfo
yapı içeriği daha önce açıklandığı gibi değiştirilir. Aksi takdirde, değişmeden bırakılır. _findclose
belirtilen arama tutamacını kapatır ve hem hem de _findfirst
_findnext
için tüm ilişkili kaynakları serbest bırakır. Silme gibi değişiklik işlemleri, kendilerine geçirilen yolları oluşturan dizinlerde gerçekleştirilmeden önce veya _findnext
tarafından _findfirst
döndürülen tanıtıcının önce öğesine geçirilmesi _findclose
gerekir.
İşlevleri iç içe _find
yerleştirebilirsiniz. Örneğin, bir çağrısı _findfirst
veya _findnext
alt dizin olan dosyayı bulursa, veya _findnext
için başka bir çağrıyla _findfirst
yeni bir arama başlatılabilir.
_wfindfirst
ve _wfindnext
'nin _findfirst
_findnext
geniş karakterli sürümleridir. Geniş karakterli sürümlerin yapı bağımsız değişkeni, içinde ve içinde IO.h
tanımlanan veri türüne Wchar.h
sahiptir_wfinddata_t
. Bu veri türünün alanları, veri türündeki alanlarla _finddata_t
aynıdır, ancak _wfinddata_t
name
alanında türü yerine türündedir wchar_t
char
. Aksi takdirde ve _wfindfirst
_wfindnext
ile _findfirst
_findnext
aynı şekilde davranır.
_findfirst
ve _findnext
64 bit zaman türünü kullanın. Eski 32 bit zaman türünü kullanmanız gerekiyorsa tanımlayabilirsiniz _USE_32BIT_TIME_T
. Bu işlevlerin adlarında soneki olan 32
sürümleri 32 bit zaman türünü, soneki olanlar 64
ise 64 bit zaman türünü kullanır.
, _findnext32i64
, _wfindfirst32i64
ve _wfindnext32i64
işlevleri_findfirst32i64
, 64 bit dosya uzunluklarını kullanıp döndürmeleri dışında, bu işlevlerin 32 bit zaman türü sürümleriyle aynı şekilde davranır. İşlevler _findfirst64i32
, _findnext64i32
, _wfindfirst64i32
ve _wfindnext64i32
64 bit zaman türünü kullanır, ancak 32 bit dosya uzunluklarını kullanır. Bu işlevler, alanların zaman ve dosya boyutu için farklı türlere sahip olduğu türün uygun çeşitlemelerini _finddata_t
kullanır.
_finddata_t
aslında olarak değerlendirilen _finddata64i32_t
(veya _finddata32_t
tanımlanmışsa _USE_32BIT_TIME_T
) bir makrodur. Aşağıdaki tabloda üzerindeki _finddata_t
çeşitlemeler özetlemektedir:
Yapı | Saat türü | Dosya boyutu türü |
---|---|---|
_finddata_t , _wfinddata_t |
__time64_t |
_fsize_t |
_finddata32_t , _wfinddata32_t |
__time32_t |
_fsize_t |
__finddata64_t , _wfinddata64_t |
__time64_t |
__int64 |
_finddata32i64_t , _wfinddata32i64_t |
__time32_t |
__int64 |
_finddata64i32_t , _wfinddata64i32_t |
__time64_t |
_fsize_t |
_fsize_t
bir typedef
for unsigned long
(32 bit).
Örnek
// crt_find.c
// This program uses the 32-bit _find functions to print
// a list of all files (and their attributes) with a .C extension
// in the current directory.
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <time.h>
int main( void )
{
struct _finddata_t c_file;
intptr_t hFile;
// Find first .c file in current directory
if( (hFile = _findfirst( "*.c", &c_file )) == -1L )
printf( "No *.c files in current directory!\n" );
else
{
printf( "Listing of .c files\n\n" );
printf( "RDO HID SYS ARC FILE DATE %25c SIZE\n", ' ' );
printf( "--- --- --- --- ---- ---- %25c ----\n", ' ' );
do {
char buffer[30];
printf( ( c_file.attrib & _A_RDONLY ) ? " Y " : " N " );
printf( ( c_file.attrib & _A_HIDDEN ) ? " Y " : " N " );
printf( ( c_file.attrib & _A_SYSTEM ) ? " Y " : " N " );
printf( ( c_file.attrib & _A_ARCH ) ? " Y " : " N " );
ctime_s( buffer, _countof(buffer), &c_file.time_write );
printf( " %-12s %.24s %9ld\n",
c_file.name, buffer, c_file.size );
} while( _findnext( hFile, &c_file ) == 0 );
_findclose( hFile );
}
}
Listing of .c files
RDO HID SYS ARC FILE DATE SIZE
--- --- --- --- ---- ---- ----
N N N Y blah.c Wed Feb 13 09:21:42 2002 1715
N N N Y test.c Wed Feb 06 14:30:44 2002 312