¿Cómo obtener por lotes los atributos de los archivos en una carpeta y almacenarlos en la base de datos?
(1) Utilice funciones estándar de la biblioteca de tiempo de ejecución de C, incluidas fopen, fclose, fseek, etc.
(2) Utilice funciones de operación de archivos y directorios en Win16, como lopen, lclose, lseek, etc. Sin embargo, en Win32, estas funciones son principalmente para compatibilidad con versiones anteriores de Win16.
(3) Utilice funciones de operación de archivos y directorios en Win32, como CreateFile, CopyFile, DeleteFile, FindNextFile, etc.
En Win32, CreateFile abre y crea archivos. Si la creación se realiza correctamente, se obtendrá un identificador de Win32, que es diferente del identificador devuelto por fopen en el lenguaje "C". En Win16, este identificador es compatible con las funciones de manipulación de archivos de la biblioteca C. Pero en Win32, la función de operación de archivo "C" no puede usar este identificador. Si es necesario, puede usar la función _open_osfhandle para obtener un archivo que la función de archivo "C" puede usar desde el identificador de Win32.
Cerrar. el identificador del archivo.
Para cerrar un archivo, utilice CloseHandle de Win32.
En Win32, CreateFile puede operar objetos distintos de archivos de disco, incluidos puertos de comunicación, tuberías, entradas de consola, ranuras de correo y otros archivos de dispositivos.
(4) Utilice CFile y sus clases derivadas para operaciones de archivos. CFile se deriva de CObject y sus clases derivadas incluyen CStdioFile para archivos de texto y CmemFile para archivos de memoria.
CFile se basa en el sistema de procesamiento de archivos Win32, que encapsula algunas funciones de procesamiento de archivos Win32.
Es mejor utilizar objetos de la clase CFile (o clases derivadas) para manipular archivos y, si es necesario, derivar sus propias clases de manipulación de archivos a partir de estas clases. Se logra una buena portabilidad utilizando consistentemente la interfaz de CFile.
Clases de archivos de MFC
MFC utiliza una serie de clases para encapsular la API de Win32 para el acceso a archivos. Sobre la base de CFile, existen muchas clases derivadas de CFile, como CStdioFile, CMemFile, CMiororFile utilizadas internamente por MFC, etc.
Estructura de CFile
Tipos de enumeración definidos por CFile
La clase CFile define muchos tipos de enumeración relacionados con operaciones de archivos, cuatro de los cuales son OpenFlags, Attribute y SeekPosition. y hFileNull.
OpenFlags
OpenFlags define 13 modos de acceso a archivos y disfrute de archivos:
enum OpenFlags {
//No. bit (comenzando desde la derecha, igual que a continuación) al segundo bit, el modo de acceso al abrir el archivo, lectura/escritura/lectura/escritura
modeRead = 0x0000,
modeWrite = 0x0001,
modeReadWrite = 0x0002,
shareCompat = 0x0000, //No se utiliza en MFC de 32 bits
//Del quinto al séptimo bit, cuando abriendo un archivo, ****modo de disfrute
> shareExclusive = 0x0010, // Modo exclusivo, prohibiendo que otros procesos lean o escriban
shareDenyWrite = 0x0020, // Deshabilitado Otros procesos escribir
shareDenyRead = 0x0030, // prohibir que otros procesos lean
shareDenyNone = 0x0040, // permitir que otros procesos escriban
// Capítulo Ocho bits, el método de herencia de archivos al abrir el archivo
modeNoInherit = 0x0080, //No permitir que los procesos secundarios hereden
// Los bits decimotercero y decimocuarto, si se debe crear un nuevo archivo y cómo crearlo
modeCreate = 0x1000, //crea un nuevo archivo con una longitud de archivo 0
modeNoTruncate = 0x2000, //abre el archivo si ya existe al crear un nuevo archivo
//bits decimoquinto y decimosexto, el archivo se abre en binario o texto, utilizado en la clase derivada CStdioFile
typeText = 0x4000,
typeBinary = (int)0x8000 p>
};
Atributo
El atributo define los atributos del archivo: normal, de solo lectura, implícito, archivo de sistema, archivo o directorio, etc.
atributo de enumeración {
normal = 0x00,
solo lectura = 0x01,
oculto = 0x02,
sistema = 0x04,
volumen = 0x08,
directorio = 0x10,
archivo = 0x20
}
SeekPosition
SeekPosition define tres tipos de posiciones de archivos: cabecera, cola y posición actual:
enum SeekPosition{
comenzar = 0x0,
p>
current = 0x1,
end = 0x2
};
hFileNull
hFileNull define un archivo vacío handle
p>enum { hFileNull = -1 };
CFile
Además del tipo de enumeración, CFile también define muchas otras variables miembro. Por ejemplo:
UINT m_hFile
Esta variable miembro es una propiedad de acceso público que contiene el identificador de archivo del sistema operativo devuelto por ::CreateFile. MFC sobrecarga el símbolo del operador HFILE para devolver m_hFile, por lo que puede usar un objeto CFile donde usaría una variable de tipo HFILE.
BOOL m_bCloseOnDelete;
CString m_strFileName;
Estas dos variables miembro son propiedades de acceso protegidas. m_bCloseOnDelete se utiliza para indicar si el objeto CFile se elimina cuando se cierra el archivo.
Funciones miembro de CFile
Las funciones miembro de CFile implementan la encapsulación de las funciones de operación de archivos Win32 y pueden completar las siguientes operaciones: abrir, crear y cerrar archivos, posicionamiento del puntero del archivo, archivo bloqueo y desbloqueo, lectura y modificación del estado de archivos, etc. Entre ellas, las funciones que utilizan el identificador de archivo m_hFile son generalmente funciones virtuales, y las funciones no relacionadas con ellas generalmente son funciones miembro estáticas. En términos generales, las funciones miembro se asignan a las funciones Win32 correspondientes, como se muestra en la Tabla 11-1.
Tabla 11-1 Encapsulación de la función CFile de funciones de archivos Win32
Función virtual
Función miembro estática
Función miembro
Funciones correspondientes de Win32
Creación, apertura y cierre de archivos