Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Representa um arquivo de fluxo de tempo de execução C conforme aberto pela função fopende tempo de execução.
Sintaxe
class CStdioFile : public CFile
Membros
Construtores Públicos
| Nome | Descrição |
|---|---|
CStdioFile::CStdioFile |
Constrói um CStdioFile objeto a partir de um caminho ou ponteiro de arquivo. |
Métodos Públicos
| Nome | Descrição |
|---|---|
CStdioFile::Open |
Sobrecarregado. Open é projetado para uso com o construtor padrão CStdioFile (Overrides CFile::Open). |
CStdioFile::ReadString |
Lê uma única linha de texto. |
CStdioFile::Seek |
Posiciona o ponteiro do arquivo atual. |
CStdioFile::WriteString |
Escreve uma única linha de texto. |
Membros de Dados Públicos
| Nome | Descrição |
|---|---|
CStdioFile::m_pStream |
Contém um ponteiro para um arquivo aberto. |
Observações
Os arquivos de fluxo são armazenados em buffer e podem ser abertos no modo de texto (o padrão) ou no modo binário.
O modo de texto fornece processamento especial para pares de alimentação de linha de retorno de carro. Quando você escreve um caractere de alimentação de linha (nova linha) (0x0A) em um objeto de modo CStdioFile de texto, o par de bytes (0x0D, 0x0A) é enviado para o arquivo. Quando você lê, o par de bytes (0x0D, 0x0A) é traduzido para um único byte de 0x0A.
As CFile funções Duplicate, LockRangee UnlockRange não são suportadas para CStdioFile.
Se você chamar essas funções em um CStdioFile, você receberá um CNotSupportedExceptionarquivo .
Para obter mais informações sobre como usar CStdioFileo , consulte os artigos Arquivos no MFC e Tratamento de arquivos na Referência da bibliotecaRun-Time.
Hierarquia de herança
CStdioFile
Requerimentos
Cabeçalho:afx.h
CStdioFile::CStdioFile
Constrói e inicializa um 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 o ponteiro de arquivo retornado por uma chamada para a função fopende tempo de execução C.
lpszFileName
Especifica uma cadeia de caracteres que é o caminho para o arquivo desejado. O caminho pode ser relativo ou absoluto.
nOpenFlags
Especifica opções para os modos de criação de arquivos, compartilhamento de arquivos e acesso a arquivos. Você pode especificar várias opções usando o operador bit a bit OR ( | ).
É necessária uma opção de modo de acesso a ficheiros; outros modos são opcionais. Consulte CFile::CFile para obter uma lista de opções de modo e outros sinalizadores. No MFC versão 3.0 e posterior, sinalizadores de compartilhamento são permitidos.
pTM
Ponteiro para objeto CAtlTransactionManager .
Observações
O construtor padrão não anexa um arquivo ao CStdioFile objeto. Ao usar esse construtor, você deve usar o CStdioFile::Open método para abrir um arquivo e anexá-lo ao CStdioFile objeto.
O construtor de parâmetro único anexa um fluxo de arquivo aberto ao CStdioFile objeto. Os valores de ponteiro permitidos incluem os ponteiros stdinde arquivo de entrada/saída predefinidos , stdoutou stderr.
O construtor de dois parâmetros cria um CStdioFile objeto e abre o arquivo correspondente com o caminho fornecido.
Se você passar NULL por um pOpenStream ou lpszFileName, o construtor lança um CInvalidArgException*arquivo .
Se o arquivo não puder ser aberto ou criado, o construtor lançará um CFileException*arquivo .
Exemplo
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
O m_pStream membro de dados é o ponteiro para um arquivo aberto conforme retornado pela função fopende tempo de execução C.
FILE* m_pStream;
Observações
NULL É se o arquivo nunca foi aberto ou foi fechado.
CStdioFile::Open
Sobrecarregado. Open é projetado para uso com o construtor padrão CStdioFile .
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
Uma cadeia de caracteres que é o caminho para o arquivo desejado. O caminho pode ser relativo ou absoluto.
nOpenFlags
Modo de partilha e acesso. Especifica a ação a ser executada ao abrir o arquivo. Você pode combinar opções usando o operador bitwise-OR (|). São necessárias uma permissão de acesso e uma opção de partilha; os modos modeCreate e modeNoInherit são opcionais.
pError
Um ponteiro para um objeto de exceção de arquivo existente que receberá o status de uma operação com falha.
pTM
Ponteiro para um objeto CAtlTransactionManager.
Valor de retorno
TRUE se for bem-sucedida; caso contrário, FALSE.
Observações
CStdioFile::ReadString
Lê dados de texto em um buffer, até um limite de nMax-1 caracteres, do arquivo associado ao CStdioFile objeto.
virtual LPTSTR ReadString(
LPTSTR lpsz,
UINT nMax);
virtual BOOL ReadString(CString& rString);
Parâmetros
lpsz
Especifica um ponteiro para um buffer fornecido pelo usuário que receberá uma cadeia de texto terminada em nulo.
nMax
Especifica o número máximo de caracteres para gravar no lpsz buffer, incluindo o nulo de terminação.
rString
Uma referência a um CString objeto que conterá a cadeia de caracteres quando a função retornar.
Valor de retorno
Um ponteiro para o buffer que contém os dados de texto.
NULL se o fim do ficheiro foi atingido sem a leitura de quaisquer dados; ou se booleano, FALSE se o fim do arquivo foi alcançado sem ler nenhum dado.
Observações
A leitura é interrompida pelo primeiro caractere de nova linha. Se, nesse caso, menos de nMax-1 caracteres tiverem sido lidos, um caractere de nova linha será armazenado no buffer. Um caractere nulo ('\0') é acrescentado em ambos os casos.
CFile::Read também está disponível para entrada no modo texto, mas não termina em um par de alimentação de linha de retorno de carro.
Observação
A CString versão desta função remove o '\n' se presente, a LPTSTR versão não.
Exemplo
CStdioFile f(stdin);
TCHAR buf[100];
f.ReadString(buf, 99);
CStdioFile::Seek
Reposiciona o ponteiro em um arquivo aberto anteriormente.
virtual ULONGLONG Seek(
LONGLONG lOff,
UINT nFrom);
Parâmetros
lOff
Número de bytes para mover o ponteiro.
nFrom
Modo de movimento do ponteiro. Deve ser um dos seguintes valores:
CFile::begin: Mova os bytes do ponteirolOffdo arquivo para frente desde o início do arquivo.CFile::current: Mova os bytes do ponteirolOffdo arquivo da posição atual no arquivo.CFile::end: Mova os bytes de ponteirolOffdo arquivo do final do arquivo. Observe quelOffdeve ser negativo para buscar no arquivo existente, valores positivos buscarão após o final do arquivo.
Valor de retorno
Se a posição solicitada for legal, Seek retorna o novo deslocamento de byte do início do arquivo. Caso contrário, o valor de retorno será indefinido e um CFileException objeto será lançado.
Observações
A Seek função permite o acesso aleatório ao conteúdo de um arquivo, movendo o ponteiro uma quantidade especificada, absoluta ou relativamente. Nenhum dado é realmente lido durante a busca. Se a posição solicitada for maior do que o tamanho do arquivo, o comprimento do arquivo será estendido para essa posição e nenhuma exceção será lançada.
Quando um arquivo é aberto, o ponteiro do arquivo é posicionado no deslocamento 0, o início do arquivo.
Esta implementação do Seek é baseada na função fseekRun-Time Library (CRT). Existem vários limites para o uso de Seek em fluxos abertos no modo de texto. Para obter mais informações, consulte fseek, _fseeki64.
Exemplo
O exemplo a seguir mostra como usar Seek para mover o ponteiro 1000 bytes do início do cfile arquivo. Observe que Seek não lê dados, portanto, você deve ligar posteriormente CStdioFile::ReadString para ler dados.
CStdioFile cfile(_T("Stdio_Seek_File.dat"), CFile::modeWrite |
CFile::modeCreate);
LONGLONG lOff = 1000;
ULONGLONG lActual = cfile.Seek(lOff, CFile::begin);
CStdioFile::WriteString
Grava dados de um buffer no arquivo associado ao CStdioFile objeto.
virtual void WriteString(LPCTSTR lpsz);
Parâmetros
lpsz
Especifica um ponteiro para um buffer que contém uma cadeia de caracteres terminada em nulo.
Observações
O caractere nulo de terminação (\0) não é gravado no arquivo. Esse método grava caracteres de nova linha no lpsz arquivo como um par de alimentação de linha de retorno de carro.
Se você quiser gravar dados que não são terminados nulos em um arquivo, use CStdioFile::Write ou CFile::Write.
Esse método lança um CInvalidArgException* se você especificar NULL para o lpsz parâmetro.
Este método lança um CFileException* em resposta a erros do sistema de arquivos.
Exemplo
CStdioFile f(stdout);
TCHAR buf[] = _T("test string");
f.WriteString(buf);
Ver também
CFile Classe
Gráfico de Hierarquia
CFile Classe
CFile::Duplicate
CFile::LockRange
CFile::UnlockRange
CNotSupportedException Classe