how-can-a-files-size-be-zero-00

Όλοι περιστασιακά συναντάμε μια «κατάσταση» στους υπολογιστές μας που μας αφήνει εντελώς αμηχανία, όπως ένα αρχείο που έχει μέγεθος μηδέν, αλλά πώς είναι ακόμη δυνατό; Η σημερινή ανάρτηση ερωτηματολογίων SuperUser έχει τις απαντήσεις σε μια σύγχυση ερώτησης αναγνώστη.

Η σημερινή συνεδρία «Ερώτηση και απάντηση» μας προσφέρει ευγενική προσφορά του SuperUser - μια υποδιαίρεση του Stack Exchange, μιας ομάδας ιστότοπων Q&A που βασίζεται στην κοινότητα.

Το ερώτημα

Ο αναγνώστης SuperUser Eugene S θέλει να μάθει πώς το μέγεθος ενός αρχείου μπορεί να είναι μηδέν:

Αυτό είναι κάτι που αντιμετώπισα και δεν μπορούσα να σκεφτώ μια σωστή εξήγηση. Εάν δημιουργήσω ένα κενό αρχείο * .txt στον υπολογιστή μου και έπειτα κοιτάξω το μέγεθός του, αυτό δείχνει μέγεθος μηδέν. Πώς γίνεται αυτό? Εννοώ ακόμα και αν το ίδιο το αρχείο είναι κενό, πρέπει να έχει κάποιο μέγεθος (ακόμα κι αν είναι μόνο για να αποθηκεύσει το δικό του όνομα). Πώς μπορεί να εξηγηθεί αυτό;

Πώς είναι δυνατόν ένα αρχείο να έχει μέγεθος μηδέν;

Η απάντηση

Οι συνεισφέροντες του SuperUser David Schwartz και Cort Ammon έχουν την απάντηση για εμάς. Πρώτο, David Schwartz:

Είναι δυνατό γιατί δεν υπάρχει κανένα αρχείο. Υπάρχει μόνο μια καταχώριση καταλόγου με όνομα και κάτοχο. Η καταχώριση καταλόγου είναι λογικά διακριτή από το αρχείο. Για παράδειγμα, το ίδιο αρχείο μπορεί να έχει περισσότερα από ένα ονόματα σε περισσότερους από έναν καταλόγους. Δυστυχώς, ο όρος αρχείο δεν χρησιμοποιείται πάντα για να σημαίνει ακριβώς το ίδιο πράγμα. Αλλά η λογική του μεγέθους αρχείου προέρχεται από το μοντέλο όπου μια καταχώριση καταλόγου επισυνάπτει ένα αρχείο σε έναν κατάλογο, και στη συνέχεια αποθηκεύονται στον κατάλογο τα ονόματα των αρχείων και τα σχετικά μεταδεδομένα.

Ακολουθείται από την απάντηση του Cort Ammon:

Η σημασιολογική σημασία του μεγέθους του αρχείου είναι διαφορετική από αυτήν που χρησιμοποιείτε. Υπάρχουν πολλά μεγέθη αρχείων που έχουν νόημα. Το πιο συνηθισμένο, και αυτό που βλέπετε εδώ, είναι ο αριθμός των byte στο αρχείο. Εάν το αρχείο είναι κενό αρχείο κειμένου, μπορεί πράγματι να περιέχει μηδέν byte. Αυτός ο αριθμός είναι σημαντικός για τους προγραμματιστές επειδή συχνά πρέπει να ανοίξουμε ένα αρχείο, να διαβάσουμε όλα τα δεδομένα και να το κλείσουμε. Πρέπει να γνωρίζουμε πόσα byte δεδομένων θα υπάρχουν στο αρχείο, ώστε να μπορούμε να σχεδιάσουμε μπροστά. Μια άλλη έννοια προκύπτει από τον τρόπο με τον οποίο τα περισσότερα συστήματα αρχείων αποθηκεύουν δεδομένα. Τα περισσότερα συστήματα αρχείων αποθηκεύουν δεδομένα σε μπλοκ. Για παράδειγμα, το σύστημα αρχείων μπορεί να αποθηκεύει δεδομένα σε μπλοκ 64 kB, πράγμα που σημαίνει ότι δεν θα εκχωρήσει ποτέ τίποτα που δεν είναι ούτε καν πολλαπλάσιο των 64 kB. Αυτό ακούγεται αναποτελεσματικό, αλλά μπορεί να κάνει την τήρηση βιβλίων αρκετά απλούστερη και συχνά απλούστερη σημαίνει ταχύτερη. Μια τρίτη έννοια, την οποία τραβάτε, θα είναι ο πραγματικός αριθμός bit που απαιτούνται στον σκληρό δίσκο για να περιγράψετε την παρουσία ενός αρχείου. Αυτό περιλαμβάνει πληροφορίες που συνήθως αποθηκεύονται ξεχωριστά από το αρχείο. Για παράδειγμα, στο Linux, η έννοια του ονόματος αρχείου αποθηκεύεται στο inode για τον κατάλογο που περιέχει το αρχείο. [Με βάση την εισαγωγή άλλων σχολίων, αποθηκεύεται (τεχνικά) στα δεδομένα του καταλόγου. Όταν το έγραψα, σκεφτόμουν την υπόθεση μικρού καταλόγου. Δεδομένα μικρότερα από 156 bytes μπορούν να αποθηκευτούν απευθείας στο inode.] Αυτό δεν είναι μια συνηθισμένη έννοια επειδή είναι εξαιρετικά δύσκολο να προσδιοριστεί χωρίς να γνωρίζουμε τις εξαιρετικά βαθιές εσωτερικές λειτουργίες του συστήματος αρχείων σας (όπως είναι ο υπολογισμός του χώρου που απαιτείται για την αποθήκευση όλων τα δικαιώματα στο αρχείο). Ωστόσο, εάν έχετε σκληρό δίσκο 1.000.000 byte και θέλετε να μάθετε πόσο μεγάλο από ένα αρχείο μπορεί να χωρέσει σε αυτόν τον σκληρό δίσκο, αυτό θα είναι πολύ σημαντικό νόημα για εσάς!

Έχετε κάτι να προσθέσετε στην εξήγηση; Ήχος στα σχόλια. Θέλετε να διαβάσετε περισσότερες απαντήσεις από άλλους χρήστες τεχνολογίας Stack Exchange; Δείτε ολόκληρο το νήμα συζήτησης εδώ.