Hallo und willkommen zurück.
In dieser Vorlesung möchte ich Sprechen Sie über den Zugriff auf Dateien.
Dateien auf der Festplatte haben also einen Namen und Die Regeln für die Benennung der
Dateien werden von Ihrem Betriebssystem festgelegt.
Möglicherweise müssen Sie anpassen Die Namen hängen vom Betriebssystem
Ihres Programms ab.
Wenn Ihr Programm unter Windows ausgeführt wird Im Vergleich zu Linux unterscheidet
sich auch die tatsächliche Verzeichnisstruktur.
Also, wenn Sie Forward Slashers verwenden oder rückwärts Schrägstriche, müssen Sie
dies in Ihrem Programm anpassen.
Aber zum größten Teil die Namen haben relativ die gleichen
Namensregeln und so weiter.
Aber es besteht die Möglichkeit, dass Sie müssten es anpassen.
Ein Programm verweist auf eine Datei durch ein Dateizeiger oder ein Streamzeiger.
Da funktioniert es auf mehr als nur einem Datei,
können Sie tatsächlich, wir haben dies bereits erwähnt, aber der Standard io-Funktionen funktionieren auf jedem Gerät.
Es heißt also Dateizeiger, aber es sollte wirklich als Stream-Zeiger
bezeichnet werden.
Sie ordnen einen Dateizeiger zu mit einer Datei programmgesteuert, wenn
Ihr Programm ausgeführt wird.
Am Ende werden Sie es also tun Erstellen Sie einen Zeiger in
Ihrem Programm, es wird vom Typ Datei und sein Das wird die Datei darstellen, wenn Sie
sie lesen und schreiben.
Wir verwenden diese Dateizeiger als effektiverer Weg, um tatsächlich auf die Dateien zu zeigen, im Gegensatz
zum Namen, weil der Name etwas anders
sein kann.
Der Zeiger wird darstellen worauf es eigentlich zeigt.
Und Sie können die Zeiger wiederverwenden, bei verschiedenen Gelegenheiten
auf verschiedene Dateien zu verweisen, was wiederum wurde durch den Dateinamen dargestellt.
Ein Dateizeiger zeigt auf eine Struktur Geben Sie eine Datei ein, die einen Stream darstellt.
Sie können tatsächlich gehen und schauen in der Dateistruktur, um alles zu sehen,
was sich darin befindet.
Aber es enthält Informationen wie als ob Sie die Datei lesen
oder schreiben oder aktualisieren möchten, die Adresse des Puffers im Speicher, in dem Sie
Daten speichern, a Zeiger auf die aktuelle Position in der
Datei für die nächste Operation.
Wir haben erwähnt, dass die Position ist wichtig,
weil Sie dort schreiben und lesen.
Und Sie können all diese Informationen einstellen innerhalb der Struktur durch
Verwendung von Eingabe- und Ausgabedateivorgängen.
Die Operationen der Eingabe-Ausgabe-Datei, Wenn Sie eine Datei öffnen, wird tatsächlich
angegeben, ob Sie möchten lesen oder schreiben.
Und dann können Sie auch das ändern aktuelle Position mit anderen Methoden wie
suchen und so weiter über die wir reden werden.
Wenn Sie mehrere Dateien verwenden möchten Gleichzeitig in Ihrem Programm müssen
Sie eine separate erstellen Dateizeiger für jede Datei.
Sie können die Datei nur wiederverwenden Zeiger, wenn Sie zu unterschiedlichen Zeiten
lesen und schreiben.
Die Anzahl der offenen Stellen ist begrenzt Dateien, die Sie gleichzeitig haben können.
Sie können sich das Limit in der ansehen Standard-E / A,
es gibt eine Konstante, die für max definiert ist hängt wieder davon ab, auf welchem
Betriebssystem Sie laufen.
Aber normalerweise möchten Sie nicht erstellen und öffnen Sie eine Menge Dateien auf einmal.
Schreiben und Lesen der Dateien ist Eine teure Operation, weil Sie auf
die Festplatte schreiben.
Es ist nicht so schnell wie das Schreiben
der Speicher, so dauert es Zeit und es kann Ihr Programm verursachen weniger reaktionsschnell sein.
Du willst keine 10 haben Dateien öffnen und
schreiben mit 10 Dateien gleichzeitig.
Um eine Datei zu öffnen, würde dies Seien Sie der erste Schritt, den
Sie tun, bevor Sie lesen und schreiben.
Sie möchten also eine bestimmte zuordnen externer Dateiname
mit einem vollständigen letzten Zeiger durch einen Prozess wird als Öffnen der Datei bezeichnet.
Die Art und Weise, wie Sie eine Datei öffnen und siehe, Sie rufen die Funktion f open auf.
Dadurch wird die Datei zurückgegeben Zeiger, den Sie dann zum
Lesen und Schreiben verwenden können.
Und wieder ist der Dateizeiger Ich werde auf eine bestimmte externe Datei
verweisen, die sich auf der Festplatte befindet.
F open wird dauern der Name der Datei.
Das Öffnen ist das, was Sie tun müssen bevor Sie lesen / schreiben.
Es ist normalerweise Ihre erste Operation.
Und wie bei den meisten dieser Funktionen Sie sind alle in Standardio definiert. h.
Hier ist die Definition des offenen Anrufs.
Sie werden sehen, dass die Rückkehr value ist ein Dateizeiger,
es sind alles Großbuchstaben, die Dateistruktur.
Also alle Caps-Datei.
Sie werden dann feststellen, dass es eine dauert paar Parameter, es braucht
einen Namen und einen Modus und mach dir darüber keine Sorgen beschränken, das ist nur mehr C11-Zeug.
Es braucht wirklich nur den Charakter Zeiger auf einen Namen und einen Modus.
Das erste Argument der Funktion ist ein Zeiger auf eine
Zeichenfolge, die der Name der Datei ist, so dass wird in doppelten Anführungszeichen stehen.
Sie können den Namen explizit oder angeben Verwenden Sie einen Zeichenzeiger, der die Adresse
der Zeichenfolge enthält.
Das alles sagt also, dass du es könntest Erstellen Sie eine Zeichenfolge und weisen Sie
sie dem wörtlichen Text zu Übergeben Sie den String an
die Funktion oder geben Sie ihn in das Double ein Anführungszeichen direkt innerhalb des Funktionsaufrufs.
Sie können den Dateinamen erhalten über die Befehlszeile auch
als Eingabe vom Benutzer oder definieren es als Konstante deines Programms.
Wenn es immer die gleiche Datei ist Sie lesen das Schreiben an
und der Name spielt keine Rolle, Sie kann nur als Konstante bezeichnet werden.
Wenn Ihr Programm flexibler ist, ist es kann vom Benutzer Eingaben erhalten, um zu sagen, was Sie
lesen oder schreiben möchten.
Das zweite Argument zum f offen Funktion ist eine Zeichenfolge,
die den Dateimodus darstellt.
Dies gibt an, was Sie tun möchten mit der Datei, ob
Sie sie lesen möchten, ob Sie schreiben möchten es, ob Sie daran anhängen möchten.
Eine Dateimodus-Spezifikation ist eine Zeichenfolge zwischen doppelten Anführungszeichen, und
ich werde zeigen Sie einige von denen, von denen wir am Ende
eine Menge verwenden werden.
Angenommen, der Anruf wird geöffnet Wenn dies erfolgreich ist, wird
der Dateizeiger mit Großbuchstaben zurückgegeben.
Und dann können Sie diese Datei verwenden Zeiger zum Aufrufen anderer Eingabe- / Ausgabefunktionen
im Standard-E / A-Header und Wir werden diese durchgehen, wenn wir lesen und
schreiben oder Sie können die Position auch mit diesem Zeiger abrufen,
um die Position zu ändern Position, an der Sie sich in der Datei befinden.
Wenn die Datei nicht geöffnet werden kann Aus irgendeinem Grund wird
f open null zurückgeben.
Was dies bedeutet, liegt also vor Ihnen Beginnen Sie mit dem Lesen oder
Schreiben. Stellen Sie sicher, dass der Zeiger nicht vorhanden ist gleich null, eine andere wenn prüfen.
Hier ist die Datei Modi, die ich erwähnt habe.
Denken Sie daran, die Dateimodi sind die zweiter Parameter zum Aufruf f open.
Dies ist, was spezifiziert, was Sie möchte mit der Datei tun, und
es ist alles in doppelten Anführungszeichen.
Wenn Sie also ein w machen, bedeutet das, dass Sie wollen um die Textdatei zum Schreiben zu öffnen.
Wenn Sie ein a machen, bedeutet das, dass Sie wollen Um die Textdatei zum Anhängen zu öffnen,
befinden sich alle Schreibvorgänge am Ende der Datei.
Wenn Sie ein r machen, öffnet es sich die Textdatei zum Lesen.
Wenn Sie einem von einem Plus hinzufügen In diesen Fällen wird die Datei im Grunde genommen erstellt,
wenn sie nicht vorhanden ist.
Wenn Sie also eine w plus -Datei öffnen, Es öffnet es für die Aktualisierung und schneidet die
Datei auf Null ab wenn es existiert oder es könnte eine neue Datei erstellen,
wenn es nicht existiert.
Bei den anderen ist es so werde schreiben oder lesen um und
die Datei muss existieren.
Das gleiche gilt für ein Plus, es wird sich öffnen es zum Anhängen, für ein Update, an das Ende
der vorhandenen Datei oder Erstellen Sie die Datei, wenn sie nicht vorhanden ist.
Und das r plus wird sich öffnen Bei der zu aktualisierenden Textdatei
wird die Datei nicht erstellt dort, weil es leer sein wird.
Das Lesen ist also nur für sowohl lesen als auch schreiben, wenn Sie
das r plus sehen.
Ein bisschen anders als die anderen Pluspunkte, wo sie tatsächlich die
Datei erstellen, die es nicht gibt.
Schreibmodus.
Wenn Sie an eine schreiben möchten vorhandene Textdatei
mit dem Namen myfile. txt würden Sie erstellen Ihr Dateizeiger, alle Großbuchstaben.
Setzen Sie es auf null, Initialisieren Sie die Null.
Und dann würdest du vielleicht kreieren Ihre Datei
als weiterer Zeichenzeiger, myfile. txt oder du könntest Übergeben Sie das als ersten Parameter, und
dann sagen Sie einfach f open.
F Öffnen Sie den Dateinamen und w dann hinein doppelte Anführungszeichen, die die Datei zum
Schreiben öffnen und einen Dateizeiger zurückgeben.
Deshalb haben Sie p-Datei auf links von der Aufgabe.
Sie möchten dann überprüfen, um zu machen sicher, dass die p-Datei nicht gleich null ist.
Denn wenn es null ist, wenn es konnte aus irgendeinem
Grund nicht geöffnet werden, möglicherweise war der Dateiname falsch oder es existierte nicht, dann könnten Sie
nicht darauf schreiben.
Also willst du immer das machen f Überprüfen Sie einige Informationen und drucken
Sie sie aus, wenn sie nicht geöffnet werden.
Dieser Code öffnet die Datei und es wird die
Datei mit dem Namen myfile verknüpfen. txt mit Ihre Datei zeigt auf die fp-Datei.
Der Modus w bedeutet, dass wir nur schreiben können In die Datei können Sie nicht lesen.
Wenn eine Datei mit dem Namen meine Datei Wenn dieser Text nicht vorhanden
ist, wird durch den Aufruf von f open ein neuer erstellt
Datei mit diesem Namen, und das ist für f mit der Option w geöffnet.
Und so, als wir im vorherigen gesehen haben Modi, w plus erstellt die Datei, wenn sie nicht vorhanden ist, aber
vorhanden ist schneidet die Datei auch auf Null ab.
Das ist das andere mit dem w.
Das w wird erstellt, wenn es existiert nicht, aber es
wird nicht auf Null gekürzt.
Das ist also der Standardweg für Öffnen von Dateien mit
diesem w in doppelten Anführungszeichen.
Wenn Sie nur den Dateinamen angeben ohne Pfadangabe, also haben
wir das hier gemacht Ein Pfad, an den Sie sich
erinnern, ist beispielsweise der Name der Verzeichnisse.
Wenn Sie den Namen des nicht angeben In Verzeichnissen wird davon ausgegangen, dass sich
diese Datei im aktuellen Verzeichnis befindet wo immer das Programm ausgeführt wird.
Wenn Sie tatsächlich öffnen möchten eine Datei an einem anderen
Ort erstellen, an dem sie sich nicht befindet das Programmverzeichnis, dann müssen Sie
den gesamten Pfad angeben.
Das nennt man den absoluten Weg.
Wenn Sie keinen Pfad angeben, ist dies normalerweise der Fall Der relative Pfad ist relativ zu dem
Ort, an dem das Programm ausgeführt wird.
Sie können also entweder eine angeben, die Absoluter oder relativer Pfad, stellen
Sie einfach sicher, dass Sie wissen, wo er sich befindet und du machst das Richtige.
Relative Pfade sind normalerweise besser denn dann ist es nicht abhängig.
Wenn jemand umgezogen wäre Diese Datei hängt nicht davon
ab, wohin sie verschoben wurde.
Und du kannst tatsächlich eine machen relativer Pfad, und Sie können Verzeichnisse zurückgehen, so dass
Sie einen Punkt machen können Schrägstrich und das ist relativ zu dem Ort, an dem
das Programm ausgeführt wird Ich gehe ein paar Verzeichnisse zurück.
Wenn Sie ein Absolut verwenden Pfad, es wäre
tatsächlich so etwas wie ein C-Colon-Programm Dateien, wenn Sie unter Windows sind.
Und wenn diese Datei jemals verschoben wurde, wird die Programm wäre nicht in der Lage, es zu öffnen.
Also beim Öffnen einer Datei zum Schreiben Die Dateiverknüpfung wird auf
Null gekürzt, und die Position wird sein am Anfang aller vorhandenen Daten
für die erste Operation.
Alle Daten, die zuvor waren Das Schreiben in die
Datei geht verloren und wird durch Schreibvorgänge überschrieben.
Also nochmal ohne vorzusehen Das Plus daran ist nur, dass Sie nicht
lesen und schreiben können.
Dies ist nur schreiben.
W ist nur richtig.
W plus bedeutet, dass Sie lesen und schreiben können.
Append-Modus.
Wenn Sie zu einem vorhandenen hinzufügen möchten Textdatei anstatt sie zu überschreiben,
können Sie den a-Modus angeben.
Das hängt davon ab.
Dadurch wird die Datei am Ende positioniert von zuvor geschriebenen Daten.
Wenn die Datei nicht existiert, es schafft eine neue.
Das Beispiel hier bist du nur Ändern Sie den zweiten Parameter in
ein doppeltes Anführungszeichen wird am Ende von myfile hinzufügen. TXT.
Und vergiss das nicht sollte den Rückgabewert
jedes Mal auf null testen.
Sie wollen immer das Wenn tun p-Datei ist nicht gleich null.
Wenn Sie eine Datei in Anhang öffnen Im Modus befinden sich
alle Schreibvorgänge am Ende der Daten in die Datei in jedem Schreibvorgang.
Alle Schreibvorgänge werden angehängt Daten in die Datei, und
Sie können die vorhandenen Inhalte in nicht aktualisieren In diesem Modus ist alles am Ende.
Im Lesemodus können wir öffnen up die Datei, um eine Datei zu lesen.
Wir benutzen nur das r in doppelten Anführungszeichen.
Dies ist schreibgeschützt, Sie kann nicht in die Datei schreiben.
Wenn Sie r plus tun, würden Sie lesen und schreiben können.
So sieht es aus wie bei den anderen Anrufen, Sie öffnen einfach f,
geben den Namen der Datei ein und r dann doppelt Anführungszeichen, die einen Dateizeiger zurückgeben.
Wir werden auch die Datei positionieren an den Anfang der Daten.
Wenn du nur lesen willst Die Datei muss bereits vorhanden sein.
Du wirst nicht Lesen Sie eine leere Datei.
Es gibt also keine Möglichkeit zum Erstellen Die Datei existiert nicht,
sie ist nur leer oder Sie würden zurückkommen Der Dateigegner wäre null.
Wenn Sie versuchen, eine Datei für zu öffnen Wenn es nicht
existiert, wird der Nullzeiger zurückgegeben.
Wenn es existiert und leer ist, Sie werden nur keine Daten zurückgeben.
Sie möchten immer die überprüfen Wert Rückgabe von f offen.
Wieder lesen Sie das für die Zum zweiten Mal ist es wichtig.
Denn wenn es ein Nullzeiger ist, Ihr Programm wird abstürzen,
es wird etwas Schlechtes tun.
Umbenennen einer Datei.
Wir wissen jetzt, wie man eine Datei öffnet.
Das Öffnen einer Datei ist das erste Operation geben Sie den
Modus und den Namen der Datei an.
Das gibt Ihnen die Datei zurück Zeiger, mit dem
Sie jetzt andere Dinge tun können.
Das Umbenennen einer Datei ist manchmal wichtig.
Es ist sehr leicht.
Sie verwenden einfach die Umbenennungsfunktion.
Es braucht einen alten und einen neuen Namen Name als konstante Zeichenzeiger,
und es wird ein int zurückgegeben.
Die zurückgegebene Ganzzahl wird Null sein, wenn die
Namensänderung erfolgreich war, andernfalls ungleich Null.
Die Datei darf nicht geöffnet sein wenn Sie umbenennen anrufen.
Sonst wird es scheitern Da es verwendet wird, können Sie eine Datei
nicht umbenennen, wenn sie verwendet wird.
Was Sie hier also tun können, ist, dass Sie es können Sagen Sie einfach Umbenennen, geben Sie den alten
und den neuen Dateinamen ein.
In diesem Beispiel verwenden wir Ein Pfad zu einer Datei in Windows.
Und dass du es weißt Fenster, weil ich Doppelpunkt sehe.
Sie bemerken auch, dass die Backslash gibt es zweimal.
Der Grund dafür ist, dass die Backslash ist ein Sonderzeichen in c.
Backslash n ist ein Zeilenfeedback.
Backslash r ist ein Wagenrücklauf.
Der Backslash hat also etwas Besonderes Bedeutung im Programm.
Also, wenn Sie die tatsächlich verwenden möchten Backslash für einen Pfad in einem Verzeichnis, wie
es Windows tut, Sie müssen zwei von ihnen zur Verfügung stellen.
Und so benennen wir hier um eine myfile. txt sucht das temporäre
Verzeichnis.
Wir benennen es in meinen Datei-Unterstrich um Kopieren. Text im Versuchsverzeichnis.
Und wenn das nicht gleich ist zu einem wird es scheitern.
Wir drucken einfach eine aus Ausgabe, die besagt, dass es fehlgeschlagen ist.
Andernfalls ist Ihr Ausdruck erfolgreich.
Dies wird das ändern Name der Datei. txt im temporären Verzeichnis zu meiner Dateikopie.
Wenn der Dateipfad falsch ist oder die Datei existiert nicht, sie
kann nicht umbenannt werden.
Sie können auch eine Datei schließen und Sie möchten Dies tun Sie immer dann, wenn Sie eine Datei öffnen.
Also, wenn Sie mit dem fertig sind Datei selbst
möchten Sie das Betriebssystem anweisen, diese Datei freizugeben.
Denken Sie daran, es gibt eine Grenze auf wie viele
Dateien Sie zu einem bestimmten Zeitpunkt geöffnet haben können.
Sie können dies tun, indem Sie anrufen die f close Funktion.
F close akzeptiert eine Datei Zeiger als Argument.
Denken Sie daran, den Dateizeiger repräsentiert die Datei.
Es wird ein Eof zurückgegeben.
Eof ist ein int.
Gibt eof zurück, wenn ein Fehler auftritt.
Eof ist ein Sonderzeichen wird das Zeichen für das Dateiende genannt.
Es ist in standardio definiert. h als negative ganze Zahl.
Es ist normalerweise gleichwertig zu negativ.
Wenn f close erfolgreich war, es wird Null zurückgeben.
So können Sie nachsehen eof für erfolglos.
Sie sagen nur f nah Pass in der Zeiger, können Sie dann den Zeiger auf null
und das Ergebnis des Aufrufs setzen f nah ist, dass die Verbindung zwischen
dem Zeiger, der p-Datei und die physische Datei ist kaputt.
P-Datei kann nicht mehr verwendet werden um auf die Datei
zum Lesen, Schreiben oder Anhängen oder Umbenennen zuzugreifen.
Wenn in die Datei geschrieben wird, Der aktuelle Inhalt des Ausgabepuffers wird in die Datei
geschrieben Stellen Sie sicher, dass die Daten nicht verloren gehen.
Sie haben also keine Probleme mit Datenintegrität, Sie werden die Datei
nicht schließen, wenn dies der Fall wäre in einen anderen Thread geschrieben werden.
Es ist also threadsicher.
Wir haben nicht über Threads gesprochen, Das ist ein fortgeschritteneres Konzept.
Aber hier können Sie mehrere haben Ausführungspunkte in Ihrem Programm.
Es ist eine gute Programmierpraxis um eine Datei zu schließen, sobald
Sie damit fertig sind, genau wie Es ist eine gute
Programmierpraxis, Speicherplatz freizugeben, wenn Sie fertig sind damit auch für das Schließen von Dateien.
Es schützt vor Verlust von Ausgabedaten.
Sie müssen auch eine Datei schließen Bevor Sie versuchen, es
umzubenennen oder zu entfernen, müssen Sie es tun geschlossen werden, es kann nicht geöffnet werden.
Wie wäre es mit dem Löschen einer Datei.
Sie können eine Datei mit löschen Aufrufen der Entfernungsfunktion.
Dies wird auch in standardio deklariert. h.
Alle Dateioperationen sind im Standard deklariert. ioh.
Sie können sich das immer ansehen Header-Datei, wenn Sie
möchten, wo immer die c-Header-Dateien installiert sind.
Also sagst du einfach entfernen Name der Datei.
Hier musst du nicht Verwenden Sie den Dateizeiger.
Man kann nur sagen, weil Die Datei muss nicht
geöffnet sein, um sie zu entfernen.
Das gleiche gilt für die Umbenennung, weil Sie möchten eigentlich nicht, dass die Dateien geöffnet sind,
weil die Umbenennen oder das Entfernen schlägt fehl.
Es wird die Datei löschen das hat den Namen myfile. txt aus dem
aktuellen Verzeichnis.
Dies liefert einen relativen Pfad.
Es wird nach dieser Datei suchen wo immer das Programm ausgeführt wird.
Ansonsten müssen Sie Geben Sie einen absoluten Pfad an.
Die Datei kann nicht geöffnet werden, wenn Sie versuche es zu löschen, genau wie beim Umbenennen.
Sie sollten immer überprüfen mit Operationen, die Dateien löschen.
Du könntest deine ruinieren System, wenn Sie dies nicht tun.
Ein Löschen ist sehr teuer, sehr gefährlicher Betrieb.
Das Löschen von Dateien kann Probleme verursachen.
Also sei vorsichtig.
Alle Informationen in dieser Vorlesung hatte mit dem Zugriff auf Dateien zu tun, wie
man Dateien öffnen kann, welche ist das, was Sie tun müssen, bevor
Sie lesen und schreiben, und auch, wie Sie kann Dateien löschen und umbenennen und dann schließen,
wenn Sie sie nicht mehr verwenden.
Alles basiert aus diesem Dateizeiger.
Verstehe also diesen Dateizeiger und die Struktur, die es enthält.
Ziemlich nützliches Zeug.
Der Standard-Io-Header enthält all die tollen Informationen.
Die nächsten paar Vorträge gehen
über das Lesen und Schreiben in Textdateien zu sprechen, tatsächlich hinzuzufügen Daten oder Hinzufügen oder Lesen.
Vielen Dank. Ich hoffe das war hilfreich.