CStdioFile
Kelas
Mewakili file aliran run-time C seperti yang dibuka oleh fungsi fopen
run-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
. LockRange
Duplicate
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
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 fopen
run-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 stdin
file input/output yang telah ditentukan sebelumnya, , stdout
atau stderr
.
Konstruktor dua parameter membuat CStdioFile
objek dan membuka file yang sesuai dengan jalur yang diberikan.
Jika Anda meneruskan NULL
untuk atau lpszFileName
pOpenStream
, 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 fopen
run-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 penunjuklOff
file ke depan dari awal file.CFile::current
: Pindahkan byte penunjuklOff
file dari posisi saat ini dalam file.CFile::end
: Pindahkan byte penunjuklOff
file dari akhir file. Perhatikan bahwalOff
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 fseek
Run-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