Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Reprezentuje plik strumienia czasu wykonywania języka C otwarty przez funkcję fopenczasu wykonywania .
Składnia
class CStdioFile : public CFile
Elementy członkowskie
Konstruktory publiczne
| Nazwa/nazwisko | opis |
|---|---|
CStdioFile::CStdioFile |
CStdioFile Tworzy obiekt ze wskaźnika ścieżki lub pliku. |
Metody publiczne
| Nazwa/nazwisko | opis |
|---|---|
CStdioFile::Open |
Przeciążone. Funkcja Open jest przeznaczona do użycia z konstruktorem domyślnym CStdioFile (przesłonięcia CFile::Open). |
CStdioFile::ReadString |
Odczytuje pojedynczy wiersz tekstu. |
CStdioFile::Seek |
Umieszcza bieżący wskaźnik pliku. |
CStdioFile::WriteString |
Zapisuje pojedynczy wiersz tekstu. |
Publiczne elementy członkowskie danych
| Nazwa/nazwisko | opis |
|---|---|
CStdioFile::m_pStream |
Zawiera wskaźnik do otwartego pliku. |
Uwagi
Pliki strumienia są buforowane i można je otwierać w trybie tekstowym (domyślnym) lub binarnym.
Tryb tekstowy zapewnia specjalne przetwarzanie par zestawienia powrotu karetki. Gdy zapisujesz znak kanału informacyjnego (nowego wiersza) (0x0A) do obiektu trybu CStdioFile tekstowego, para bajtów (0x0D, 0x0A) jest wysyłana do pliku. Podczas odczytywania para bajtów (0x0D, 0x0A) jest tłumaczona na jeden bajt 0x0A.
Funkcje CFileDuplicate, LockRangei UnlockRange nie są obsługiwane dla programu CStdioFile.
Jeśli wywołasz te funkcje w obiekcie CStdioFile, otrzymasz wartość CNotSupportedException.
Aby uzyskać więcej informacji na temat korzystania z programu CStdioFile, zobacz artykuły Pliki w MFC i Obsługa plików w dokumentacji biblioteki czasu wykonywania.
Hierarchia dziedziczenia
CStdioFile
Wymagania
Nagłówek:afx.h
CStdioFile::CStdioFile
Tworzy i inicjuje CStdioFile obiekt.
CStdioFile();
CStdioFile(CAtlTransactionManager* pTM);
CStdioFile(FILE* pOpenStream);
CStdioFile(
LPCTSTR lpszFileName,
UINT nOpenFlags);
CStdioFile(
LPCTSTR lpszFileName,
UINT nOpenFlags,
CAtlTransactionManager* pTM);
Parametry
pOpenStream
Określa wskaźnik pliku zwracany przez wywołanie funkcji fopenczasu wykonywania języka C .
lpszFileName
Określa ciąg, który jest ścieżką do żądanego pliku. Ścieżka może być względna lub bezwzględna.
nOpenFlags
Określa opcje tworzenia plików, udostępniania plików i trybów dostępu do plików. Można określić wiele opcji za pomocą operatora bitowego OR ( ). |
Wymagana jest jedna opcja trybu dostępu do plików; inne tryby są opcjonalne. Zobacz CFile::CFile listę opcji trybu i innych flag. W programie MFC w wersji 3.0 lub nowszej flagi udostępniania są dozwolone.
pTM
Wskaźnik do CAtlTransactionManager obiektu.
Uwagi
Domyślny konstruktor nie dołącza pliku do CStdioFile obiektu. W przypadku używania tego konstruktora CStdioFile::Open należy użyć metody , aby otworzyć plik i dołączyć go do CStdioFile obiektu.
Konstruktor jednoparametrowy dołącza otwarty strumień plików do CStdioFile obiektu. Dozwolone wartości wskaźnika obejmują wstępnie zdefiniowane wskaźniki stdinpliku wejściowego/wyjściowego , stdoutlub stderr.
Konstruktor dwuparametrowy CStdioFile tworzy obiekt i otwiera odpowiedni plik z daną ścieżką.
Jeśli przekażesz NULL element pOpenStream lub lpszFileName, konstruktor zgłosi wyjątek CInvalidArgException*.
Jeśli nie można otworzyć ani utworzyć pliku, konstruktor zgłasza błąd CFileException*.
Przykład
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
Element m_pStream członkowski danych jest wskaźnikiem do otwartego pliku zwróconego przez funkcję fopenczasu wykonywania języka C .
FILE* m_pStream;
Uwagi
Jest to NULL , jeśli plik nigdy nie został otwarty lub został zamknięty.
CStdioFile::Open
Przeciążone. Funkcja Open jest przeznaczona do użycia z konstruktorem domyślnym CStdioFile .
virtual BOOL Open(
LPCTSTR lpszFileName,
UINT nOpenFlags,
CFileException* pError = NULL);
virtual BOOL Open(
LPCTSTR lpszFileName,
UINT nOpenFlags,
CAtlTransactionManager* pTM,
CFileException* pError = NULL);
Parametry
lpszFileName
Ciąg, który jest ścieżką do żądanego pliku. Ścieżka może być względna lub bezwzględna.
nOpenFlags
Udostępnianie i tryb dostępu. Określa akcję do wykonania podczas otwierania pliku. Opcje można łączyć za pomocą operatora bitowego OR (|). Wymagane jest jedno uprawnienie dostępu i jedna opcja udziału; tryb modeCreate i modeNoInherit są opcjonalne.
pError
Wskaźnik do istniejącego obiektu wyjątku pliku, który otrzyma stan operacji, która zakończy się niepowodzeniem.
pTM
Wskaźnik do CAtlTransactionManager obiektu.
Wartość zwracana
TRUE w przypadku powodzenia; w przeciwnym razie FALSE.
Uwagi
CStdioFile::ReadString
Odczytuje dane tekstowe do buforu( do limitu nMax-1 znaków) z pliku skojarzonego z obiektem CStdioFile .
virtual LPTSTR ReadString(
LPTSTR lpsz,
UINT nMax);
virtual BOOL ReadString(CString& rString);
Parametry
lpsz
Określa wskaźnik do buforu dostarczonego przez użytkownika, który będzie otrzymywać ciąg tekstowy o wartości null.
nMax
Określa maksymalną liczbę znaków do zapisu w buforze lpsz , w tym wartość null zakończenia.
rString
Odwołanie do CString obiektu, który będzie zawierać ciąg po powrocie funkcji.
Wartość zwracana
Wskaźnik do buforu zawierającego dane tekstowe.
NULL jeśli osiągnięto koniec pliku bez odczytywania żadnych danych; lub jeśli wartość logiczna, FALSE jeśli osiągnięto koniec pliku bez odczytywania żadnych danych.
Uwagi
Odczyt jest zatrzymywany przez pierwszy znak nowego wiersza. Jeśli w takim przypadku odczytano mniej niż nMax-1 znaki, w buforze jest przechowywany znak nowego wiersza. Znak null ('\0') jest dołączany w obu przypadkach.
CFile::Read Jest również dostępny dla danych wejściowych w trybie tekstowym, ale nie kończy się na parze zestawienia powrotnego karetki.
Uwaga
Wersja CString tej funkcji usuwa '\n' wartość , jeśli jest obecna; LPTSTR wersja nie.
Przykład
CStdioFile f(stdin);
TCHAR buf[100];
f.ReadString(buf, 99);
CStdioFile::Seek
Zmienia położenie wskaźnika w wcześniej otwartym pliku.
virtual ULONGLONG Seek(
LONGLONG lOff,
UINT nFrom);
Parametry
lOff
Liczba bajtów do przeniesienia wskaźnika.
nFrom
Tryb ruchu wskaźnika. Musi mieć jedną z następujących wartości:
CFile::begin: Przenieś bajty wskaźnikalOffpliku do przodu od początku pliku.CFile::current: Przenieś bajty wskaźnikalOffpliku z bieżącej pozycji w pliku.CFile::end: Przenieś bajty wskaźnikalOffpliku z końca pliku. Należy pamiętać, żelOffwyszukiwanie w istniejącym pliku musi być ujemne. Wartości dodatnie będą wyszukiwać obok końca pliku.
Wartość zwracana
Jeśli żądane położenie jest legalne, Seek zwraca nowe przesunięcie bajtów od początku pliku. W przeciwnym razie wartość zwracana jest niezdefiniowana, a CFileException obiekt jest zgłaszany.
Uwagi
Funkcja Seek zezwala na losowy dostęp do zawartości pliku przez przeniesienie wskaźnika określoną kwotę, absolutnie lub stosunkowo. Podczas wyszukiwania nie są odczytywane żadne dane. Jeśli żądana pozycja jest większa niż rozmiar pliku, długość pliku zostanie przedłużona do tej pozycji i nie zostanie zgłoszony żaden wyjątek.
Po otwarciu pliku wskaźnik pliku jest umieszczony na przesunięciu 0 na początku pliku.
Ta implementacja Seek programu jest oparta na funkcji fseekBiblioteka czasu wykonywania (CRT). Istnieje kilka ograniczeń dotyczących użycia Seek strumieni otwartych w trybie tekstowym. Aby uzyskać więcej informacji, zobacz fseek, _fseeki64.
Przykład
W poniższym przykładzie pokazano, jak przenieść Seek wskaźnik 1000 bajtów od początku cfile pliku. Należy pamiętać, że Seek nie odczytuje danych, dlatego należy następnie wywołać metodę CStdioFile::ReadString odczytu danych.
CStdioFile cfile(_T("Stdio_Seek_File.dat"), CFile::modeWrite |
CFile::modeCreate);
LONGLONG lOff = 1000;
ULONGLONG lActual = cfile.Seek(lOff, CFile::begin);
CStdioFile::WriteString
Zapisuje dane z buforu do pliku skojarzonego z obiektem CStdioFile .
virtual void WriteString(LPCTSTR lpsz);
Parametry
lpsz
Określa wskaźnik do buforu, który zawiera ciąg zakończony o wartości null.
Uwagi
Znak null zakończenia (\0) nie jest zapisywany w pliku. Ta metoda zapisuje znaki nowego wiersza w lpsz pliku jako parę zestawienia powrotnego karetki.
Jeśli chcesz zapisać dane, które nie są zakończone wartością null do pliku, użyj polecenia CStdioFile::Write lub CFile::Write.
Ta metoda zgłasza wyjątek CInvalidArgException* w przypadku określenia NULL parametru lpsz .
Ta metoda zgłasza CFileException* błąd systemu plików w odpowiedzi na błędy systemu plików.
Przykład
CStdioFile f(stdout);
TCHAR buf[] = _T("test string");
f.WriteString(buf);
Zobacz też
CFile Klasa
Wykres hierarchii
CFile Klasa
CFile::Duplicate
CFile::LockRange
CFile::UnlockRange
CNotSupportedException Klasa