Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Clase
Representa un archivo de secuencia en tiempo de ejecución de C tal como lo abre la función en tiempo de ejecución fopen.
Sintaxis
class CStdioFile : public CFile
Miembros
Constructores públicos
| Nombre | Descripción |
|---|---|
CStdioFile::CStdioFile |
Construye un objeto CStdioFile a partir de una ruta de acceso o un identificador de archivo. |
Métodos públicos
| Nombre | Descripción |
|---|---|
CStdioFile::Open |
Con sobrecarga. Open está diseñado para su uso con el constructor CStdioFile predeterminado (invalida CFile::Open). |
CStdioFile::ReadString |
Lee una sola línea de texto. |
CStdioFile::Seek |
Coloca el puntero de archivo actual. |
CStdioFile::WriteString |
Escribe una sola línea de texto. |
Miembros de datos públicos
| Nombre | Descripción |
|---|---|
CStdioFile::m_pStream |
Contiene un puntero a un archivo abierto. |
Comentarios
Los archivos de secuencia se almacenan en búfer y se pueden abrir en modo de texto (el predeterminado) o en modo binario.
El modo de texto proporciona un procesamiento especial para los pares de avance de retorno de carro. Al escribir un carácter de avance de línea (nueva línea) (0x0A) en un objeto CStdioFile en modo de texto, el par de bytes (0x0D, 0x0A) se envía al archivo. Cuando se lee, el par de bytes (0x0D, 0x0A) se traduce a un solo byte de 0x0A.
Las CFile funciones Duplicate, LockRangey UnlockRange no se admiten para CStdioFile.
Si llama a estas funciones en CStdioFile, obtendrá un CNotSupportedException.
Para obtener más información sobre el uso de CStdioFile, vea los artículos Archivos en MFC y Control de archivos en la Referencia de la biblioteca en tiempo de ejecución.
Jerarquía de herencia
CStdioFile
Requisitos
Encabezado: afx.h
CStdioFile::CStdioFile
Construye e inicializa un objeto CStdioFile.
CStdioFile();
CStdioFile(CAtlTransactionManager* pTM);
CStdioFile(FILE* pOpenStream);
CStdioFile(
LPCTSTR lpszFileName,
UINT nOpenFlags);
CStdioFile(
LPCTSTR lpszFileName,
UINT nOpenFlags,
CAtlTransactionManager* pTM);
Parámetros
pOpenStream
Especifica el puntero de archivo devuelto por una llamada a la función fopenen tiempo de ejecución de C .
lpszFileName
Especifica una cadena que es la ruta de acceso al archivo deseado. La ruta de acceso puede ser relativa o absoluta.
nOpenFlags
Especifica las opciones para la creación de archivos, el uso compartido de archivos y los modos de acceso a archivos. Puede especificar varias opciones mediante el operador OR ( | ) bit a bit.
Se requiere una opción de modo de acceso a archivos; otros modos son opcionales. Consulte CFile::CFile para obtener una lista de opciones de modo y otras marcas. En MFC versión 3.0 y posteriores, se permiten marcas de recurso compartido.
pTM
Puntero al objeto CAtlTransactionManager.
Comentarios
El constructor predeterminado no adjunta un archivo al objeto CStdioFile. Al usar este constructor, debe usar el método CStdioFile::Open para abrir un archivo y adjuntarlo al CStdioFile objeto.
El constructor de un solo parámetro adjunta un flujo de archivo abierto al objeto CStdioFile. Los valores de puntero permitidos incluyen los punteros de archivo de entrada y salida predefinidos stdin, stdouto stderr.
El constructor de dos parámetros crea un CStdioFile objeto y abre el archivo correspondiente con la ruta de acceso especificada.
Si pasa NULL para o pOpenStreamlpszFileName, el constructor produce una CInvalidArgException*excepción.
Si el archivo no se puede abrir o crear, el constructor produce una CFileException*excepción.
Ejemplo
TCHAR* pFileName = _T("CStdio_File.dat");
CStdioFile f1;
if(!f1.Open(pFileName, CFile::modeCreate | CFile::modeWrite
| CFile::typeText))
{
TRACE(_T("Unable to open file\n"));
}
CStdioFile f2(stdout);
try
{
CStdioFile f3( pFileName,
CFile::modeCreate | CFile::modeWrite | CFile::typeText );
}
catch(CFileException* pe)
{
TRACE(_T("File could not be opened, cause = %d\n"),
pe->m_cause);
pe->Delete();
}
CStdioFile::m_pStream
El m_pStream miembro de datos es el puntero a un archivo abierto tal como lo devuelve la función fopenen tiempo de ejecución de C .
FILE* m_pStream;
Comentarios
Es NULL si el archivo nunca se ha abierto o se ha cerrado.
CStdioFile::Open
Con sobrecarga. Open está diseñado para su uso con el constructor CStdioFile predeterminado.
virtual BOOL Open(
LPCTSTR lpszFileName,
UINT nOpenFlags,
CFileException* pError = NULL);
virtual BOOL Open(
LPCTSTR lpszFileName,
UINT nOpenFlags,
CAtlTransactionManager* pTM,
CFileException* pError = NULL);
Parámetros
lpszFileName
Cadena que es la ruta de acceso al archivo deseado. La ruta de acceso puede ser relativa o absoluta.
nOpenFlags
Modo de uso compartido y acceso. Especifica la acción que se debe realizar al abrir el archivo. Puede combinar opciones mediante el operador OR bit a bit (|). Se requiere un permiso de acceso y una opción de recurso compartido. los modos modeCreate y modeNoInherit son opcionales.
pError
Puntero a un objeto de excepción de archivo existente que va a recibir el estado de una operación con error.
pTM
Un puntero a un objeto CAtlTransactionManager.
Valor devuelto
TRUE si es correcto; de lo contrario, FALSE.
Comentarios
CStdioFile::ReadString
Lee datos de texto en un búfer, hasta un límite de nMax-1 caracteres, del archivo asociado al CStdioFile objeto .
virtual LPTSTR ReadString(
LPTSTR lpsz,
UINT nMax);
virtual BOOL ReadString(CString& rString);
Parámetros
lpsz
Especifica un puntero a un búfer proporcionado por el usuario que recibirá una cadena de texto terminada en NULL.
nMax
Especifica el número máximo de caracteres que se van a escribir en el lpsz búfer, incluido el valor NULL de terminación.
rString
Referencia a un objeto CString que contendrá la cadena cuando se devuelva la función.
Valor devuelto
Puntero al búfer que contiene los datos de texto.
NULL si se alcanzó el final del archivo sin leer ningún dato; o si se ha alcanzado un valor booleano, FALSE si se alcanzó el final del archivo sin leer ningún dato.
Comentarios
La lectura se detiene con el primer carácter de nueva línea. Si, en ese caso, se han leído menos de nMax-1 caracteres, se almacena un carácter de nueva línea en el búfer. Un carácter nulo ('\0') se anexa en cualquier caso.
CFile::Read también está disponible para la entrada en modo de texto, pero no termina en un par de avance de retorno de carro.
Nota:
La CString versión de esta función quita si '\n' está presente; la LPTSTR versión no.
Ejemplo
CStdioFile f(stdin);
TCHAR buf[100];
f.ReadString(buf, 99);
CStdioFile::Seek
Cambia la posición del puntero en un archivo abierto previamente.
virtual ULONGLONG Seek(
LONGLONG lOff,
UINT nFrom);
Parámetros
lOff
Número de bytes para mover el puntero de archivo.
nFrom
Modo de movimiento de puntero. Debe ser uno de los siguientes valores:
CFile::begin: mueva los byteslOffdel puntero de archivo hacia delante desde el principio del archivo.CFile::current: mueva los byteslOffdel puntero de archivo desde la posición actual del archivo.CFile::end: mueva los byteslOffdel puntero de archivo desde el final del archivo. Tenga en cuenta quelOffdebe ser negativo para buscar en el archivo existente; los valores positivos buscarán más allá del final del archivo.
Valor devuelto
Si la posición solicitada es legal, Seek devuelve el nuevo desplazamiento de bytes desde el principio del archivo. De lo contrario, el valor devuelto no está definido y se produce un objeto CFileException.
Comentarios
La función Seek permite el acceso aleatorio al contenido de un archivo moviendo el puntero una cantidad especificada, absoluta o relativamente. En realidad, no se lee ningún dato durante la búsqueda. Si la posición solicitada es mayor que el tamaño del archivo, la longitud del archivo se extenderá a esa posición y no se producirá ninguna excepción.
Cuando se abre un archivo, el puntero de archivo se coloca en el desplazamiento 0, el principio del archivo.
Esta implementación de Seek se basa en la función fseekRun-Time Library (CRT). Hay varios límites en el uso de Seek en secuencias abiertas en modo de texto. Para más información, vea fseek, _fseeki64.
Ejemplo
En el ejemplo siguiente se muestra cómo usar Seek para mover el puntero 1000 bytes desde el principio del cfile archivo. Tenga en cuenta que Seek no lee los datos, por lo que posteriormente debe llamar CStdioFile::ReadString a para leer los datos.
CStdioFile cfile(_T("Stdio_Seek_File.dat"), CFile::modeWrite |
CFile::modeCreate);
LONGLONG lOff = 1000;
ULONGLONG lActual = cfile.Seek(lOff, CFile::begin);
CStdioFile::WriteString
Escribe datos de un búfer en el archivo asociado al objeto CStdioFile.
virtual void WriteString(LPCTSTR lpsz);
Parámetros
lpsz
Especifica un puntero a un búfer que contiene una cadena terminada en null.
Comentarios
El carácter nulo de terminación (\0) no se escribe en el archivo. Este método escribe caracteres de nueva línea en lpsz el archivo como un par de avance de línea de retorno de carro.
Si desea escribir datos que no terminan en null en un archivo, use CStdioFile::Write o CFile::Write.
Este método produce un CInvalidArgException* si especifica NULL para el lpsz parámetro.
Este método produce una CFileException* excepción en respuesta a errores del sistema de archivos.
Ejemplo
CStdioFile f(stdout);
TCHAR buf[] = _T("test string");
f.WriteString(buf);
Vea también
CFile (clase)
Gráfico de jerarquías
CFile (clase)
CFile::Duplicate
CFile::LockRange
CFile::UnlockRange
CNotSupportedException (clase)