Bagaimanakah Saiz Fail menjadi Sifar?
Kita semua kadang-kadang berjalan di 'keadaan' pada komputer kita yang meninggalkan kita benar-benar bingung, seperti fail yang mempunyai saiz sifar, tetapi bagaimana mungkin itu? Siaran Q & A SuperUser hari ini mempunyai jawapan kepada soalan pembaca yang keliru.
Sesi Soalan & Jawapan hari ini datang kepada kami dengan ihsan SuperUser-bahagian pembahagian Stack Exchange, kumpulan yang diketuai oleh komuniti laman web Q & A.
Soalan
Pembaca SuperUser Eugene S ingin tahu bagaimana saiz fail boleh sifar:
Ini adalah sesuatu yang saya lari dan tidak dapat memikirkan penjelasan yang betul. Jika saya buat kosong * .txt fail pada komputer saya dan kemudian melihat saiznya, ia menunjukkan saiz sifar. Bagaimana mungkin? Maksud saya walaupun file itu sendiri kosong, ia masih mempunyai beberapa saiz (walaupun jika hanya untuk menyimpan nama sendiri). Bagaimana ini boleh dijelaskan?
Bagaimana mungkin fail mempunyai saiz sifar?
Jawapan
Penyumbang SuperUser David Schwartz dan Cort Ammon mempunyai jawapan untuk kami. Pertama, David Schwartz:
Ia mungkin kerana tidak ada fail. Hanya ada entri direktori dengan nama dan pemiliknya. Penyertaan direktori secara logik berbeza dari fail. Sebagai contoh, fail yang sama boleh mempunyai lebih daripada satu nama di lebih daripada satu direktori.
Malangnya, istilah fail tidak selalu digunakan untuk maksud sama dengan perkara yang sama. Tetapi logik saiz fail berasal dari model di mana entri direktori melekatkan fail ke direktori, maka nama fail dan data meta berkaitan disimpan dalam direktori.
Diikuti oleh jawapan dari Cort Ammon:
Maksud saiz fail semantik adalah berbeza dari yang anda gunakan.
Terdapat banyak saiz fail yang bermakna. Yang paling biasa, dan yang anda lihat di sini, ialah bilangan bait dalam fail. Sekiranya fail itu adalah fail teks kosong, ia mungkin mengandungi bait sifar. Nombor ini penting kepada pengaturcara kerana kita sering perlu membuka fail, membaca semua data, dan menutupnya. Kita perlu tahu berapa banyak bait data akan berada dalam fail supaya kita dapat merancang lebih awal.
Makna lain timbul dari cara kebanyakan sistem fail menyimpan data. Kebanyakan sistem fail menyimpan data dalam blok. Sebagai contoh, sistem fail mungkin menyimpan data dalam blok 64 kB, bermakna ia tidak akan memperuntukkan apa-apa yang tidak lebih daripada 64 kB. Ini terdengar tidak cekap, tetapi ia boleh membuat simpan kira agak mudah, dan lebih mudah bermakna lebih cepat.
Makna yang ketiga, yang anda menarik, akan menjadi bilangan sebenar bit yang diperlukan pada cakera keras untuk menggambarkan kehadiran fail. Ini termasuk maklumat yang biasanya disimpan secara berasingan daripada fail. Sebagai contoh, dalam Linux, konsep nama fail disimpan dalam inode untuk direktori yang mengandungi fail tersebut. [Berdasarkan input daripada komen lain, ini (secara teknikal) disimpan dalam data direktori. Apabila saya menulis ini, saya memikirkan kes kecil direktori. Data yang lebih kecil daripada 156 bait boleh disimpan secara langsung dalam inode.] Ini bukan makna yang biasa digunakan kerana sangat sukar untuk ditentukan tanpa mengetahui cara kerja dalam sistem fail anda (seperti perakaunan untuk ruang yang diperlukan untuk menyimpan semua kebenaran pada fail). Walau bagaimanapun, jika anda mempunyai 1,000,000 byte hard drive dan ingin tahu berapa besar fail yang boleh muat pada cakera keras itu, ini akan menjadi makna yang sangat penting kepada anda!
Mempunyai sesuatu untuk menambah penjelasannya? Bunyi dalam komen. Ingin membaca lebih banyak jawapan dari pengguna Stack Exchange yang berteknologi tinggi? Lihat thread perbincangan penuh di sini.