_open, _wopen
Otevře soubor.Tyto funkce jsou nepoužívá, protože bezpečnější verze jsou k dispozici; see _sopen_s _wsopen_s.
int _open(
const char *filename,
int oflag [,
int pmode]
);
int _wopen(
const wchar_t *filename,
int oflag [,
int pmode]
);
Parametry
filename
Název souboru.oflag
Typ operace povolena.pmode
Režim oprávnění.
Vrácená hodnota
Každá z těchto funkcí vrátí popisovač souboru otevřeného souboru.Vrácená hodnota-1 označuje chybu, v případě errno je nastavena na jednu z následujících hodnot.
EACCES
Došlo k pokusu o otevření souboru jen pro čtení pro zápis, režim sdílení souboru nepovoluje zadanou operací nebo danou cestu je adresář.EEXIST
_O_CREATa _O_EXCL příznaky zadán, ale filename již existuje.EINVAL
Neplatný oflag nebo pmode argument.EMFILE
Žádné další popisovače souboru k dispozici (příliš mnoho otevřených souborů).ENOENT
Soubor nebo cesta nebyla nalezena.
Další informace o těchto a jiných návratové kódy, viz _doserrno, kód chyby, _sys_errlist a _sys_nerr.
Poznámky
_open Funkce otevře určený soubor filename a připraví soubor pro čtení nebo zápisu podle oflag._wopenje verze celého znaku _open; filename argument _wopen je řetězec znaků wide._wopena _open chovají jinak shodně.
Obecný Text rutinní mapování
Rutina Tchar.h |
_UNICODE a _MBCS není definován |
_MBCS, definice |
_UNICODE, definice |
---|---|---|---|
_topen |
_open |
_open |
_wopen |
oflagvýraz celé číslo vytvořené z jedné nebo více z následujících konstant manifestu nebo konstantní kombinace definované v Fcntl.h.
_O_APPEND
Přesune ukazatel souboru na konec souboru před každou operaci zápisu._O_BINARY
Otevře soubor v binárním režimu (nepřeložený).(Viz fopen popis binární režim.)_O_CREAT
Vytvoří a otevře nový soubor pro zápis.Pokud určený soubor nemá žádný vliv filename existuje.pmodeargument je vyžadován při _O_CREAT je určena._O_CREAT| _O_SHORT_LIVED
Vytvoření souboru jako dočasné a pokud možno nebyla vyprázdněna na disk.pmodeargument je vyžadován při _O_CREAT je určena._O_CREAT| _O_TEMPORARY
Vytvoření souboru jako dočasné; soubor je odstraněn po zavření poslední popisovač souboru.pmodeargument je vyžadován při _O_CREAT je určena._O_CREAT| _O_EXCL
Vrátí chybovou hodnotu, pokud soubor určený filename existuje.Platí pouze při použití s _O_CREAT._O_NOINHERIT
Zabrání vytvoření sdíleného souboru deskriptoru._O_RANDOM
Určuje, že do mezipaměti je optimalizována pro, ale není omezen na náhodný přístup z disku._O_RDONLY
Otevře soubor pro čtení pouze; Nelze zadat s _O_RDWR nebo _O_WRONLY._O_RDWR
Otevře soubor pro čtení i zápis; Nelze zadat tento příznak s _O_RDONLY nebo _O_WRONLY._O_SEQUENTIAL
Určuje, že do mezipaměti je optimalizována pro, ale není omezen na sekvenční přístup z disku._O_TEXT
Otevře soubor v režimu text (přeložit).(Další informace naleznete v tématu textu a binární režim souboru v/V a fopen.)_O_TRUNC
Otevře soubor a zkrátí jej nulové délky; soubor musí mít oprávnění k zápisu.Nelze zadat tento příznak s _O_RDONLY._O_TRUNCs _O_CREAT otevře existující soubor nebo vytvoří nový soubor.[!POZNÁMKA]
_O_TRUNC Příznak ničí obsah zadaného souboru.
_O_WRONLY
Otevře soubor pro zápis. Nelze zadat s _O_RDONLY nebo _O_RDWR._O_U16TEXT
Otevřete soubor v režimu Unicode UTF-16._O_U8TEXT
Otevřete soubor v režimu Unicode UTF-8._O_WTEXT
Otevřete soubor v režimu Unicode.
Chcete-li určit režim přístupu k souboru je nutné zadat buď _O_RDONLY, _O_RDWR, nebo _O_WRONLY.Výchozí hodnota pro režim přístupu neexistuje.
Pokud _O_WTEXT se používá k otevření souboru pro čtení, _open přečte začátku souboru a zkontrolujte, zda značka pro pořadí bajtů (BOM).Pokud je Kusovník, soubor se zachází jako UTF-8 nebo UTF-16LE v závislosti na Kusovníku.Pokud je k dispozici žádné Kusovníku, soubor je považován za ANSI.Při otevření souboru pro zápis pomocí _O_WTEXT, je použito kódování UTF-16.Pokud _O_UTF8 je použita, vždy otevření souboru jako UTF-8 a pokud _O_UTF16 je použita, vždy otevření souboru jako UTF-16 bez ohledu na jakékoli předchozí nastavení nebo bajt značka pro pořadí.
Pokud _open je volána s _O_WRONLY|_O_APPEND (režim Přidat) a _O_WTEXT, _O_U16TEXT, nebo _O_U8TEXT, se nejprve pokusí otevřít soubor pro čtení a zápis, čtení Kusovníku a poté jej znovu otevřete pro psaní pouze.Pokud otevřete soubor pro čtení a zápis se nezdaří, bude soubor pro zápis pouze otevřít a použít výchozí hodnotu pro nastavení režimu Unicode.
Při použití dvou nebo více manifestu konstanty do formuláře oflag argument, konstanty jsou kombinovány s (operátor bitový operátor OR |).Diskuse režimy binární a textu, viz textu a binární režim souboru v/V.
pmode Argument je vyžadován pouze při _O_CREAT je určena.Pokud soubor již existuje, pmode je ignorována.Jinak pmode určuje nastavení oprávnění souboru, které jsou nastaveny při prvním zavření nového souboru._openpoužije aktuální maska souboru oprávnění k pmode před nastavením oprávnění (Další informace naleznete v _umask).pmodeje výraz celé číslo obsahující jeden nebo oba následující manifestu konstanty definované v SYS\Stat.h.
_S_IREAD
Povoleno pouze čtení._S_IWRITE
Zápis povolen (účinně umožňuje čtení a zápis)._S_IREAD | _S_IWRITE
Čtení a zápis povolen.
Při obou konstanty jsou uvedeny, jsou spojeny pomocí operátoru bitový operátor OR ( |).V systému Windows NT jsou čitelné, všechny soubory na tak oprávnění jen pro zápis není k dispozici; proto režimy _S_IWRITE a**_S_IREAD** | _S_IWRITEjsou ekvivalentní.
Pokud je zadána hodnota jiných než výše uvedených pmode (i v případě, že by zadejte platné pmode v jiném operačním systému) nebo jinou hodnotu než povolená oflag zadané hodnoty, funkce generuje nepravdivých v režimu ladění a vyvolá obsluhu neplatný parametr popsaným v Ověření parametrů.Pokud je povoleno spuštění pokračovat, vrátí funkce hodnotu -1 a sady errno na EINVAL.
Požadavky
Rutina |
Požadované záhlaví |
Volitelné záhlaví |
---|---|---|
_open |
<io.h> |
<fcntl.h>, <sys/types.h>, <sys/stat.h> |
_wopen |
<io.h> nebo <wchar.h> |
<fcntl.h>, <sys/types.h>, <sys/stat.h> |
Další informace o kompatibilitě v tématu Compatibility v úvodu.
Knihovny
Všechny verze C Runtime knihovny.
Příklad
// 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 );
}
}
Výsledek
Open succeeded on input file
Open succeeded on output file
Ekvivalent v rozhraní .NET Framework
System::IO::FileStream::FileStream