Bagikan melalui


Kelas CInternetFile

Memungkinkan akses ke file pada sistem jarak jauh yang menggunakan protokol Internet.

Sintaks

class CInternetFile : public CStdioFile

Anggota

Konstruktor yang Dilindungi

Nama Deskripsi
CInternetFile::CInternetFile Membuat CInternetFile objek.

Metode Publik

Nama Deskripsi
CInternetFile::Batalkan Menutup file, mengabaikan semua peringatan dan kesalahan.
CInternetFile::Close CInternetFile Menutup dan membebaskan sumber dayanya.
CInternetFile::Flush Bersihkan isi buffer tulis dan pastikan data dalam memori ditulis ke komputer target.
CInternetFile::GetLength Mengembalikan ukuran file.
CInternetFile::Read Membaca jumlah byte yang ditentukan.
CInternetFile::ReadString Membaca aliran karakter.
CInternetFile::Seek Memposisikan ulang penunjuk dalam file yang terbuka.
CInternetFile::SetReadBufferSize Mengatur ukuran buffer tempat data akan dibaca.
CInternetFile::SetWriteBufferSize Mengatur ukuran buffer tempat data akan ditulis.
CInternetFile::Write Menulis jumlah byte yang ditentukan.
CInternetFile::WriteString Menulis string null-terminated ke file.

Operator Publik

Nama Deskripsi
CInternetFile::operator HINTERNET Operator transmisi untuk handel Internet.

Anggota Data yang Dilindungi

Nama Deskripsi
CInternetFile::m_hFile Handel ke file.

Keterangan

Menyediakan kelas dasar untuk kelas file CHttpFile dan CGopherFile . Anda tidak pernah membuat objek secara CInternetFile langsung. Sebagai gantinya, buat objek dari salah satu kelas turunannya dengan memanggil CGopherConnection::OpenFile atau CHttpConnection::OpenRequest. Anda juga dapat membuat CInternetFile objek dengan memanggil CFtpConnection::OpenFile.

Fungsi anggota , , UnlockRange, dan Duplicate tidak diimplementasikan untuk CInternetFile. LockRangeOpenCInternetFile Jika Anda memanggil fungsi-fungsi ini pada CInternetFile objek, Anda akan mendapatkan CNotSupportedException.

Untuk mempelajari selengkapnya tentang cara CInternetFile kerja dengan kelas Internet MFC lainnya, lihat artikel Pemrograman Internet dengan WinInet.

Hierarki Warisan

CObject

CFile

CStdioFile

CInternetFile

Persyaratan

Header: afxinet.h

CInternetFile::Batalkan

Menutup file yang terkait dengan objek ini dan membuat file tidak tersedia untuk membaca atau menulis.

virtual void Abort();

Keterangan

Jika Anda belum menutup file sebelum menghancurkan objek, destruktor menutupnya untuk Anda.

Saat menangani pengecualian, Abort berbeda dari Tutup dengan dua cara penting. Pertama, Abort fungsi tidak melemparkan pengecualian pada kegagalan karena mengabaikan kegagalan. Kedua, Abort tidak MENEGASKAN jika file belum dibuka atau ditutup sebelumnya.

CInternetFile::CInternetFile

Fungsi anggota ini dipanggil ketika CInternetFile objek dibuat.

CInternetFile(
    HINTERNET hFile,
    LPCTSTR pstrFileName,
    CInternetConnection* pConnection,
    BOOL bReadMode);

CInternetFile(
    HINTERNET hFile,
    HINTERNET hSession,
    LPCTSTR pstrFileName,
    LPCTSTR pstrServer,
    DWORD_PTR dwContext,
    BOOL bReadMode);

Parameter

hFile
Handel ke file Internet.

pstrFileName
Penunjuk ke string yang berisi nama file.

pConnection
Penunjuk ke objek CInternetConnection .

bReadMode
Menunjukkan apakah file bersifat baca-saja.

hSession
Handel ke sesi Internet.

pstrServer
Penunjuk ke string yang berisi nama server.

dwContext
Pengidentifikasi konteks untuk CInternetFile objek. Lihat Dasar-Dasar WinInet untuk informasi selengkapnya tentang pengidentifikasi konteks.

Keterangan

Anda tidak pernah membuat objek secara CInternetFile langsung. Sebagai gantinya, buat objek dari salah satu kelas turunannya dengan memanggil CGopherConnection::OpenFile atau CHttpConnection::OpenRequest. Anda juga dapat membuat CInternetFile objek dengan memanggil CFtpConnection::OpenFile.

CInternetFile::Close

CInternetFile Menutup dan membebaskan salah satu sumber dayanya.

virtual void Close();

Keterangan

Jika file dibuka untuk ditulis, ada panggilan implisit ke Flush untuk memastikan bahwa semua data buffer ditulis ke host. Anda harus memanggil Close ketika Anda selesai menggunakan file.

CInternetFile::Flush

Panggil fungsi anggota ini untuk menghapus isi buffer tulis.

virtual void Flush();

Keterangan

Gunakan Flush untuk memastikan bahwa semua data dalam memori sebenarnya telah ditulis ke komputer target dan untuk memastikan transaksi Anda dengan komputer host telah selesai. Flush hanya efektif pada CInternetFile objek yang dibuka untuk menulis.

CInternetFile::GetLength

Mengembalikan ukuran file.

virtual ULONGLONG GetLength() const;

CInternetFile::m_hFile

Handel ke file yang terkait dengan objek ini.

HINTERNET m_hFile;

CInternetFile::operator HINTERNET

Gunakan operator ini untuk mendapatkan handel Windows untuk sesi Internet saat ini.

operator HINTERNET() const;

CInternetFile::Read

Panggil fungsi anggota ini untuk membaca ke dalam memori yang diberikan, dimulai dari lpvBuf, jumlah byte yang ditentukan, nCount.

virtual UINT Read(
    void* lpBuf,
    UINT nCount);

Parameter

lpBuf
Penunjuk ke alamat memori tempat data file dibaca.

nCount
Jumlah byte yang akan ditulis.

Tampilkan Nilai

Jumlah byte yang ditransfer ke buffer. Nilai yang dikembalikan mungkin kurang dari nCount jika akhir file tercapai.

Keterangan

Fungsi mengembalikan jumlah byte yang benar-benar dibaca — angka yang mungkin kurang dari nCount jika file berakhir. Jika terjadi kesalahan saat membaca file, fungsi melemparkan objek CInternetException yang menjelaskan kesalahan. Perhatikan bahwa membaca melewati akhir file tidak dianggap sebagai kesalahan dan tidak ada pengecualian yang akan dilemparkan.

Untuk memastikan semua data diambil, aplikasi harus terus memanggil CInternetFile::Read metode hingga metode mengembalikan nol.

CInternetFile::ReadString

Panggil fungsi anggota ini untuk membaca aliran karakter hingga menemukan karakter baris baru.

virtual BOOL ReadString(CString& rString);

virtual LPTSTR ReadString(
    LPTSTR pstr,
    UINT nMax);

Parameter

pstr
Penunjuk ke string yang akan menerima baris yang sedang dibaca.

nMax
Jumlah maksimum karakter yang akan dibaca.

rString
Referensi ke objek CString yang menerima baris baca.

Tampilkan Nilai

Penunjuk ke buffer yang berisi data biasa yang diambil dari objek CInternetFile . Terlepas dari jenis data buffer yang diteruskan ke metode ini, ia tidak melakukan manipulasi apa pun pada data (misalnya, konversi ke Unicode), jadi Anda harus memetakan data yang dikembalikan ke struktur yang Anda harapkan, seolah-olah void * jenis dikembalikan.

NULL jika akhir file tercapai tanpa membaca data apa pun; atau, jika boolean, FALSE jika akhir file tercapai tanpa membaca data apa pun.

Keterangan

Fungsi menempatkan baris yang dihasilkan ke dalam memori yang dirujuk oleh parameter pstr . Ini berhenti membaca karakter ketika mencapai jumlah karakter maksimum, yang ditentukan oleh nMax. Buffer selalu menerima karakter null yang dihentikan.

Jika Anda memanggil ReadString tanpa terlebih dahulu memanggil SetReadBufferSize, Anda akan mendapatkan buffer 4096 byte.

CInternetFile::Seek

Panggil fungsi anggota ini untuk memposisikan ulang penunjuk dalam file yang dibuka sebelumnya.

virtual ULONGLONG Seek(
    LONGLONG lOffset,
    UINT nFrom);

Parameter

LOffset
Offset dalam byte untuk memindahkan pointer baca/tulis dalam file.

nDari
Referensi relatif untuk offset. Harus salah satu nilai berikut:

  • CFile::beginPindahkan byte lOff pointer file ke depan dari awal file.

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

  • CFile::endPindahkan byte lOff penunjuk file dari akhir file. lOff harus negatif untuk mencari file yang ada; nilai positif akan mencari melewati akhir file.

Tampilkan Nilai

Offset byte baru dari awal file jika posisi yang diminta legal; jika tidak, nilai tidak terdefinisi dan objek CInternetException 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.

Saat ini, panggilan ke fungsi anggota ini hanya didukung untuk data yang terkait dengan CHttpFile objek. Ini tidak didukung untuk permintaan FTP atau gopher. Jika Anda memanggil Seek salah satu layanan yang tidak didukung ini, itu akan meneruskan Anda kembali ke kode kesalahan Win32 ERROR_INTERNET_INVALID_OPERATION.

Saat file dibuka, penunjuk file berada di offset 0, awal file.

Catatan

Menggunakan Seek dapat menyebabkan panggilan implisit ke Flush.

Contoh

Lihat contoh untuk implementasi kelas dasar ( CFile::Seek).

CInternetFile::SetReadBufferSize

Panggil fungsi anggota ini untuk mengatur ukuran buffer baca sementara yang CInternetFiledigunakan oleh objek -turunan.

BOOL SetReadBufferSize(UINT nReadSize);

Parameter

nReadSize
Ukuran buffer yang diinginkan dalam byte.

Tampilkan Nilai

Bukan nol jika berhasil; jika tidak, 0. Jika panggilan gagal, fungsi Win32 GetLastError dapat dipanggil untuk menentukan penyebab kesalahan.

Keterangan

API WinInet yang mendasar tidak melakukan buffering, jadi pilih ukuran buffer yang memungkinkan aplikasi Anda membaca data secara efisien, terlepas dari jumlah data yang akan dibaca. Jika setiap panggilan ke Baca biasanya melibatkan aount data besar (misalnya, empat kilobyte atau lebih), Anda seharusnya tidak memerlukan buffer. Namun, jika Anda memanggil Read untuk mendapatkan potongan kecil data, atau jika Anda menggunakan ReadString untuk membaca baris individual pada satu waktu, maka buffer baca meningkatkan performa aplikasi.

Secara default, CInternetFile objek tidak menyediakan buffering apa pun untuk dibaca. Jika Anda memanggil fungsi anggota ini, Anda harus yakin bahwa file telah dibuka untuk akses baca.

Anda dapat meningkatkan ukuran buffer kapan saja, tetapi menyusutkan buffer tidak akan berpengaruh. Jika Anda memanggil ReadString tanpa panggilan SetReadBufferSizepertama, Anda akan mendapatkan buffer 4096 byte.

CInternetFile::SetWriteBufferSize

Panggil fungsi anggota ini untuk mengatur ukuran buffer tulis sementara yang CInternetFiledigunakan oleh objek -turunan.

BOOL SetWriteBufferSize(UINT nWriteSize);

Parameter

nWriteSize
Ukuran buffer dalam byte.

Tampilkan Nilai

Bukan nol jika berhasil; jika tidak, 0. Jika panggilan gagal, fungsi Win32 GetLastError dapat dipanggil untuk menentukan penyebab kesalahan.

Keterangan

API WinInet yang mendasar tidak melakukan buffering, jadi pilih ukuran buffer yang memungkinkan aplikasi Anda menulis data secara efisien terlepas dari jumlah data yang akan ditulis. Jika setiap panggilan ke Tulis biasanya melibatkan sejumlah besar data (misalnya, empat kilobyte atau lebih pada satu waktu), Anda tidak perlu buffer. Namun, jika Anda memanggil Tulis untuk menulis potongan kecil data, buffer tulis meningkatkan performa aplikasi Anda.

Secara default, CInternetFile objek tidak menyediakan buffering apa pun untuk menulis. Jika Anda memanggil fungsi anggota ini, Anda harus yakin bahwa file telah dibuka untuk akses tulis. Anda dapat mengubah ukuran buffer tulis kapan saja, tetapi melakukannya menyebabkan panggilan implisit ke Flush.

CInternetFile::Write

Panggil fungsi anggota ini untuk menulis ke dalam memori yang diberikan, lpvBuf, jumlah byte yang ditentukan, nCount.

virtual void Write(
    const void* lpBuf,
    UINT nCount);

Parameter

lpBuf
Penunjuk ke byte pertama yang akan ditulis.

nCount
Menentukan jumlah byte yang akan ditulis.

Keterangan

Jika terjadi kesalahan saat menulis data, fungsi melempar objek CInternetException yang menjelaskan kesalahan.

CInternetFile::WriteString

Fungsi ini menulis string null-terminated ke file terkait.

virtual void WriteString(LPCTSTR pstr);

Parameter

pstr
Penunjuk ke string yang berisi konten yang akan ditulis.

Keterangan

Jika terjadi kesalahan saat menulis data, fungsi melempar objek CInternetException yang menjelaskan kesalahan.

Lihat juga

Kelas CStdioFile
Bagan Hierarki
Kelas CInternetConnection