Rumah >pembangunan bahagian belakang >C++ >Bagaimana Mendapatkan Saiz Fail dalam C : Pendekatan Mudah dan Boleh Dipercayai?

Bagaimana Mendapatkan Saiz Fail dalam C : Pendekatan Mudah dan Boleh Dipercayai?

Susan Sarandon
Susan Sarandonasal
2024-11-11 12:58:03945semak imbas

How to Get a File's Size in C  : A Simple and Reliable Approach?

Menentukan Saiz Fail dalam C

Pertanyaan "Bagaimana saya boleh mendapatkan saiz fail dalam C?" menggesa penerokaan ke dalam kaedah yang paling lazim untuk melaksanakan tugas ini sambil mematuhi kriteria tertentu.

Kriteria:

  • Mudah alih merentas platform (Unix, Mac, Windows)
  • Boleh dipercayai dan tepat
  • Mudah difahami dan tanpa luaran kebergantungan perpustakaan

Pendekatan Biasa:

Menggunakan ciri I/O fail asli C, pendekatan biasa untuk menentukan saiz fail melibatkan perkara berikut langkah:

#include <fstream>

std::ifstream::pos_type filesize(const char* filename) {
    std::ifstream in(filename, std::ifstream::ate | std::ifstream::binary);
    return in.tellg();
}

Penjelasan:

  1. Sertakan perpustakaan untuk operasi I/O fail.
  2. Tentukan saiz fail fungsi yang menerima nama fail sebagai parameter dan mengembalikan saiz fail sebagai std::ifstream::pos_type.
  3. Buat std: :ifstream objek dalam dan buka fail yang ditentukan oleh nama fail dalam mod "perduaan". (std::ifstream::binary).
  4. Gunakan mod std::ifstream::ate untuk meletakkan penunjuk fail di hujung fail.
  5. Dapatkan semula kedudukan penuding fail semasa menggunakan in.tellg(), yang mengembalikan saiz fail dalam bait.
  6. Kembalikan fail saiz.

Maklumat Tambahan:

Sila ambil perhatian bahawa penyelesaian ini menganggap fail tidak dibuka dalam aplikasi lain, yang mungkin menjejaskan saiz fail. Untuk butiran lanjut tentang pengendalian fail dalam C , rujuk: http://www.cplusplus.com/doc/tutorial/files/.

Atas ialah kandungan terperinci Bagaimana Mendapatkan Saiz Fail dalam C : Pendekatan Mudah dan Boleh Dipercayai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn