Bagikan melalui


CStdioFile Kelas

Mewakili file aliran run-time C seperti yang dibuka oleh fungsi fopenrun-time .

Sintaks

class CStdioFile : public CFile

Anggota

Konstruktor Publik

Nama Deskripsi
CStdioFile::CStdioFile Membuat CStdioFile objek dari jalur atau penunjuk file.

Metode Publik

Nama Deskripsi
CStdioFile::Open Kelebihan beban. Buka dirancang untuk digunakan dengan konstruktor default CStdioFile (Penimpaan CFile::Open).
CStdioFile::ReadString Membaca satu baris teks.
CStdioFile::Seek Memposisikan penunjuk file saat ini.
CStdioFile::WriteString Menulis satu baris teks.

Anggota Data Publik

Nama Deskripsi
CStdioFile::m_pStream Berisi penunjuk ke file yang terbuka.

Keterangan

File streaming di-buffer dan dapat dibuka dalam mode teks (default) atau mode biner.

Mode teks menyediakan pemrosesan khusus untuk pasangan umpan baris kembali pengangkutan. Saat Anda menulis karakter umpan baris (baris baru) (0x0A) ke objek mode CStdioFile teks, pasangan byte (0x0D, 0x0A) dikirim ke file. Saat Anda membaca, pasangan byte (0x0D, 0x0A) diterjemahkan ke satu byte 0x0A.

Fungsi CFile , , dan UnlockRange tidak didukung untuk CStdioFile. LockRangeDuplicate

Jika Anda memanggil fungsi-fungsi ini pada CStdioFile, Anda akan mendapatkan CNotSupportedException.

Untuk informasi selengkapnya tentang menggunakan CStdioFile, lihat artikel File di MFC dan Penanganan File di Referensi Pustaka Run-Time.

Hierarki Warisan

CObject

CFile

CStdioFile

Persyaratan

Header: afx.h

CStdioFile::CStdioFile

Membuat dan menginisialisasi CStdioFile objek.

CStdioFile();
CStdioFile(CAtlTransactionManager* pTM);
CStdioFile(FILE* pOpenStream);

CStdioFile(
    LPCTSTR lpszFileName,
    UINT nOpenFlags);

CStdioFile(
    LPCTSTR lpszFileName,
    UINT nOpenFlags,
    CAtlTransactionManager* pTM);

Parameter

pOpenStream
Menentukan penunjuk file yang dikembalikan oleh panggilan ke fungsi fopenrun-time C .

lpszFileName
Menentukan string yang merupakan jalur ke file yang diinginkan. Jalurnya bisa relatif atau absolut.

nOpenFlags
Menentukan opsi untuk pembuatan file, berbagi file, dan mode akses file. Anda dapat menentukan beberapa opsi dengan menggunakan operator bitwise OR ( | ) .

Satu opsi mode akses file diperlukan; mode lain bersifat opsional. Lihat CFile::CFile untuk daftar opsi mode dan bendera lainnya. Di MFC versi 3.0 dan yang lebih baru, bendera berbagi diizinkan.

pTM
Penunjuk ke CAtlTransactionManager objek.

Keterangan

Konstruktor default tidak melampirkan file ke CStdioFile objek. Saat menggunakan konstruktor ini, Anda harus menggunakan CStdioFile::Open metode untuk membuka file dan melampirkannya ke CStdioFile objek.

Konstruktor parameter tunggal melampirkan aliran file terbuka ke CStdioFile objek. Nilai pointer yang diizinkan termasuk penunjuk stdinfile input/output yang telah ditentukan sebelumnya, , stdoutatau stderr.

Konstruktor dua parameter membuat CStdioFile objek dan membuka file yang sesuai dengan jalur yang diberikan.

Jika Anda meneruskan NULL untuk atau lpszFileNamepOpenStream , konstruktor melempar CInvalidArgException*.

Jika file tidak dapat dibuka atau dibuat, konstruktor akan melempar CFileException*.

Contoh

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

Anggota m_pStream data adalah penunjuk ke file terbuka seperti yang dikembalikan oleh fungsi fopenrun-time C .

FILE* m_pStream;

Keterangan

Ini adalah NULL jika file belum pernah dibuka atau telah ditutup.

CStdioFile::Open

Kelebihan beban. Buka dirancang untuk digunakan dengan konstruktor default CStdioFile .

virtual BOOL Open(
    LPCTSTR lpszFileName,
    UINT nOpenFlags,
    CFileException* pError = NULL);

virtual BOOL Open(
    LPCTSTR lpszFileName,
    UINT nOpenFlags,
    CAtlTransactionManager* pTM,
    CFileException* pError = NULL);

Parameter

lpszFileName
String yang merupakan jalur ke file yang diinginkan. Jalurnya bisa relatif atau absolut.

nOpenFlags
Mode berbagi dan akses. Menentukan tindakan yang akan diambil saat membuka file. Anda dapat menggabungkan opsi dengan menggunakan operator bitwise-OR (|). Diperlukan satu izin akses dan satu opsi berbagi; modeBuat dan modeNoInherit bersifat opsional.

pError
Penunjuk ke objek pengecualian file yang ada yang akan menerima status operasi yang gagal.

pTM
Penunjuk CAtlTransactionManager ke objek.

Tampilkan Nilai

TRUE jika berhasil; jika tidak FALSE.

Keterangan

CStdioFile::ReadString

Membaca data teks ke dalam buffer, hingga batas nMax-1 karakter, dari file yang terkait dengan CStdioFile objek.

virtual LPTSTR ReadString(
    LPTSTR lpsz,
    UINT nMax);

virtual BOOL ReadString(CString& rString);

Parameter

lpsz
Menentukan penunjuk ke buffer yang disediakan pengguna yang akan menerima string teks null-terminated.

nMax
Menentukan jumlah maksimum karakter yang akan ditulis ke lpsz dalam buffer, termasuk penghentian null.

rString
Referensi ke CString objek yang akan berisi string saat fungsi kembali.

Tampilkan Nilai

Penunjuk ke buffer yang berisi data teks. NULL jika akhir file tercapai tanpa membaca data apa pun; atau jika boolean, FALSE jika akhir file tercapai tanpa membaca data apa pun.

Keterangan

Membaca dihentikan oleh karakter baris baru pertama. Jika, dalam hal ini, kurang dari nMax-1 karakter telah dibaca, karakter baris baru disimpan dalam buffer. Karakter null ('\0') ditambahkan dalam kedua kasus.

CFile::Read juga tersedia untuk input mode teks, tetapi tidak berakhir pada pasangan umpan baris kembali pengangkutan.

Catatan

Versi CString fungsi ini menghapus '\n' jika ada; LPTSTR versi tidak.

Contoh

CStdioFile f(stdin);
TCHAR buf[100];

f.ReadString(buf, 99);

CStdioFile::Seek

Memposisikan ulang penunjuk dalam file yang dibuka sebelumnya.

virtual ULONGLONG Seek(
    LONGLONG lOff,
    UINT nFrom);

Parameter

lOff
Jumlah byte untuk memindahkan penunjuk.

nFrom
Mode pergerakan pointer. Harus salah satu nilai berikut:

  • CFile::begin: Pindahkan byte penunjuk lOff file ke depan dari awal file.

  • CFile::current: Pindahkan byte penunjuk lOff file dari posisi saat ini dalam file.

  • CFile::end: Pindahkan byte penunjuk lOff file dari akhir file. Perhatikan bahwa lOff harus negatif untuk dicari ke dalam file yang ada; nilai positif akan mencari melewati akhir file.

Tampilkan Nilai

Jika posisi yang diminta legal, Seek mengembalikan offset byte baru dari awal file. Jika tidak, nilai yang dikembalikan tidak ditentukan dan CFileException objek dilemparkan.

Keterangan

Fungsi ini Seek mengizinkan akses acak ke konten file dengan memindahkan penunjuk jumlah tertentu, benar-benar atau relatif. Tidak ada data yang benar-benar dibaca selama pencarian. Jika posisi yang diminta lebih besar dari ukuran file, panjang file akan diperluas ke posisi tersebut, dan tidak ada pengecualian yang akan dilemparkan.

Saat file dibuka, penunjuk file diposisikan pada offset 0, awal file.

Implementasi Seek ini didasarkan pada fungsi fseekRun-Time Library (CRT). Ada beberapa batasan penggunaan Seek pada aliran yang dibuka dalam mode teks. Untuk informasi selengkapnya, lihat fseek, _fseeki64.

Contoh

Contoh berikut menunjukkan cara menggunakan Seek untuk memindahkan pointer 1000 byte dari awal cfile file. Perhatikan bahwa Seek tidak membaca data, jadi Anda kemudian harus memanggil CStdioFile::ReadString untuk membaca data.

CStdioFile cfile(_T("Stdio_Seek_File.dat"), CFile::modeWrite |
   CFile::modeCreate);
LONGLONG lOff = 1000;
ULONGLONG lActual = cfile.Seek(lOff, CFile::begin);

CStdioFile::WriteString

Menulis data dari buffer ke file yang terkait dengan CStdioFile objek.

virtual void WriteString(LPCTSTR lpsz);

Parameter

lpsz
Menentukan penunjuk ke buffer yang berisi string yang dihentikan null.

Keterangan

Karakter null yang mengakhiri ( \0) tidak ditulis ke file. Metode ini menulis karakter lpsz baris baru ke file sebagai pasangan umpan baris kembali pengangkutan.

Jika Anda ingin menulis data yang tidak dihentikan null ke file, gunakan CStdioFile::Write atau CFile::Write.

Metode ini melempar CInvalidArgException* jika Anda menentukan NULL untuk lpsz parameter .

Metode ini melempar CFileException* sebagai respons terhadap kesalahan sistem file.

Contoh

CStdioFile f(stdout);
TCHAR buf[] = _T("test string");

f.WriteString(buf);

Lihat juga

CFile Kelas
Bagan Hierarki
CFile Kelas
CFile::Duplicate
CFile::LockRange
CFile::UnlockRange
CNotSupportedException Kelas