Open, _wopen
Abre um arquivo.Essas funções estão obsoletas porque versões mais seguras disponíveis; see _sopen_s, _wsopen_s.
int _open(
const char *filename,
int oflag [,
int pmode]
);
int _wopen(
const wchar_t *filename,
int oflag [,
int pmode]
);
Parâmetros
filename
Nome do arquivo.oflag
Tipo de operações permitidas.pmode
Modo de permissão.
Valor de retorno
Cada uma dessas funções retorna um descritor de arquivo para o arquivo aberto.Um valor de retorno de -1 indica um erro, caso em que errno é definida para um dos seguintes valores.
EACCES
Você tentou abrir um arquivo somente leitura para gravação, o modo de compartilhamento do arquivo não permite operações especificadas ou caminho especificado é o diretório.EEXIST
_O_CREATe _O_EXCL sinalizadores especificados, mas filename já existe.EINVAL
Inválido oflag ou pmode argumento.EMFILE
Não há mais descritores de arquivo disponíveis (muitos arquivos abertos).ENOENT
Arquivo ou caminho não encontrado.
Para obter mais informações sobre esses e outros códigos de retorno, consulte _doserrno, errno, _sys_errlist e _sys_nerr.
Comentários
O _open função abre o arquivo especificado por filename e prepara o arquivo para leitura ou gravação, conforme especificado pelo oflag._wopené uma versão de caractere largo de _open; o filename argumento para _wopen é uma seqüência de caracteres largos._wopene _open tenham comportamento idêntico caso contrário.
Mapeamentos de rotina de texto genérico
Rotina de TCHAR.h |
_ Unicode e _ MBCS do arquivo não definido |
_ MBCS do arquivo definido |
_ Unicode definido |
---|---|---|---|
_topen |
_open |
_open |
_wopen |
oflaguma expressão de inteiro é formada de uma ou mais das seguintes constantes de manifesto ou combinações de constantes definidas no Fcntl.h.
_O_APPEND
Move o ponteiro do arquivo no final do arquivo antes de cada operação de gravação._O_BINARY
Abre o arquivo no modo binário de (não traduzido).(Consulte fopen para obter uma descrição do modo binário.)_O_CREAT
Cria e abre um novo arquivo para gravação.Não terá efeito se o arquivo especificado pelo filename existe.pmodeargumento é necessário quando _O_CREAT é especificado._O_CREAT| _O_SHORT_LIVED
Criar um arquivo como temporário e, se possível não liberou para o disco.pmodeargumento é necessário quando _O_CREAT é especificado._O_CREAT| _O_TEMPORARY
Criar um arquivo como temporário. o arquivo é excluído quando o último descritor de arquivo é fechado.pmodeargumento é necessário quando _O_CREAT é especificado._O_CREAT| _O_EXCL
Retorna um valor de erro se o arquivo especificado pelo filename existe.Aplica-se somente quando usado com _O_CREAT._O_NOINHERIT
Impede a criação de um descritor de arquivo compartilhado._O_RANDOM
Especifica que o cache é otimizado para, mas não restrito para acesso aleatório do disco._O_RDONLY
Abre um arquivo para leitura. não pode ser especificado com _O_RDWR ou _O_WRONLY._O_RDWR
Abre o arquivo para leitura e escrita; Você não pode especificar esse sinalizador com _O_RDONLY ou _O_WRONLY._O_SEQUENTIAL
Especifica que o cache é otimizado para, mas não restrito para acesso seqüencial do disco._O_TEXT
Abre um arquivo em modo de texto (traduzido).(Para obter mais informações, consulte texto e binário e/S de arquivos de modo e fopen.)_O_TRUNC
Abre um arquivo e trunca como zero comprimento; o arquivo deve ter permissão de gravação.Você não pode especificar esse sinalizador com _O_RDONLY._O_TRUNCusado com _O_CREAT abre um arquivo existente ou cria um novo arquivo.Observação O _O_TRUNC sinalizador destrói o conteúdo do arquivo especificado.
_O_WRONLY
Abre o arquivo para gravar apenas; não pode ser especificado com _O_RDONLY ou _O_RDWR._O_U16TEXT
Abra o arquivo no modo Unicode UTF-16._O_U8TEXT
Abra o arquivo no modo Unicode UTF-8._O_WTEXT
Abra o arquivo no modo Unicode.
Para especificar o modo de acesso de arquivo, você deve especificar um _O_RDONLY, _O_RDWR, ou _O_WRONLY.Não há nenhum valor padrão para o modo de acesso.
Se _O_WTEXT é usado para abrir um arquivo para leitura, _open lê o início do arquivo e verificar se há uma marca de ordem de byte (BOM).Se houver um BOM, o arquivo é tratado como UTF-8 ou UTF-16LE, dependendo da BOM.Se nenhum BOM estiver presente, o arquivo é tratado como ANSI.Quando um arquivo é aberto para gravação usando _O_WTEXT, UTF-16 é usado.Se _O_UTF8 é usado, o arquivo sempre é aberto como UTF-8 e se _O_UTF16 é usado, o arquivo é sempre aberto como UTF-16 independentemente de qualquer marca de ordem de bytes ou configuração anterior.
Se _open é chamado com _O_WRONLY|_O_APPEND (modo de acréscimo) e _O_WTEXT, _O_U16TEXT, ou _O_U8TEXT, ele irá tentar abrir o arquivo para leitura e gravação, primeiro leia a BOM e depois reabri-la somente para gravação.Se abrir o arquivo para leitura e gravação falhar, ele irá abri-lo somente para gravação e usar o valor padrão para a configuração do modo Unicode.
Quando dois ou mais constantes manifesto são usados para o formulário de oflag argumento, as constantes são combinadas com o (operador bit a bit ou |).Para uma discussão sobre os modos de texto e binário, consulte texto e binário e/S de arquivos de modo.
O pmode argumento é necessário somente quando _O_CREAT é especificado.Se o arquivo já existir, pmode será ignorado.Caso contrário, pmode Especifica as configurações de permissão do arquivo, que são definidas quando o novo arquivo for fechado na primeira vez._openaplica-se a máscara de permissão de arquivo atual para pmode antes de definir as permissões (para obter mais informações, consulte _umask).pmodeé uma expressão de inteiros que contém uma ou ambas das seguintes constantes manifesto, definidas em SYS\Stat.h.
_S_IREAD
Permitido somente de leitura._S_IWRITE
Permitida de escrita (efetivamente permite a leitura e gravação)._S_IREAD | _S_IWRITE
Permissão de leitura e gravação.
Quando as duas constantes forem fornecidas, elas se unem com o (operador bit a bit ou |).Em Windows NT, todos os arquivos estão legíveis, portanto, a permissão somente para gravação não está disponível. Assim, os modos de _S_IWRITE e**_S_IREAD** | _S_IWRITEsão equivalentes.
Se um valor diferente de opções acima for especificado para pmode (mesmo se ele especificar um assembly válido pmode em outro sistema operacional) ou qualquer valor diferente do permitido oflag valores for especificado, a função gera uma declaração no modo de depuração e chama o manipulador de parâmetro inválido, conforme descrito em Validação de parâmetro.Se a execução terá permissão para continuar, a função retornará -1 e conjuntos de errno para EINVAL.
Requisitos
Rotina |
Cabeçalho necessário |
Cabeçalho opcional |
---|---|---|
_open |
<io.h> |
<fcntl.h>, <sys/types.h>, <sys/stat.h> |
_wopen |
<io.h> ou <wchar.h> |
<fcntl.h>, <sys/types.h>, <sys/stat.h> |
Para obter mais informações de compatibilidade, consulte compatibilidade na introdução.
Bibliotecas
Todas as versões da bibliotecas de tempo de execução c.
Exemplo
// crt_open.c
// compile with: /W3
/* This program uses _open to open a file
* named CRT_OPEN.C for input and a file named CRT_OPEN.OUT
* for output. The files are then closed.
*/
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdio.h>
int main( void )
{
int fh1, fh2;
fh1 = _open( "CRT_OPEN.C", _O_RDONLY ); // C4996
// Note: _open is deprecated; consider using _sopen_s instead
if( fh1 == -1 )
perror( "Open failed on input file" );
else
{
printf( "Open succeeded on input file\n" );
_close( fh1 );
}
fh2 = _open( "CRT_OPEN.OUT", _O_WRONLY | _O_CREAT, _S_IREAD |
_S_IWRITE ); // C4996
if( fh2 == -1 )
perror( "Open failed on output file" );
else
{
printf( "Open succeeded on output file\n" );
_close( fh2 );
}
}
Saída
Open succeeded on input file
Open succeeded on output file
Equivalência do .NET Framework
System::IO::FileStream::FileStream