Twitter und Facebook-Anbindung
X
Tweet Follow @twitterapi
!!! Anbindung an twitter und facebook öffnen !!!

Wenn Ihnen mein Online-Buch gefällt,
dann bedanken Sie sich doch mit einer kleinen Spende...

13.1.2 Die Tücken der Dateiarbeit

13.1.2 Die Tücken der Dateiarbeit

Der Umgang mit Dateien ist prinzipiell nicht sonderlich schwer, aber es gibt eine Menge Sachen zu beachten, auf die ich hier kurz eingehen werde.

Die erste Schwierigkeit ist dadurch begründet, dass wir heute in der Regel mit Mehrbenutzersystemen arbeiten. D.h. es kann vorkommen, dass wir auf Dateien keinen Zugriff bekommen, da sie von anderen Benutzern oder Prozessen verwendet werden. Deshalb sollten Sie vor Dateizugriffen prüfen, ob Sie auf die gewüschte Datei zugreifen kann.

Ein weiteres Problem ist, dass Sie evtl. gar nicht das Recht haben, auf eine gewisse Datei zugreifen zu können, weil sie einem anderen Benutzer gehören, welcher Ihnen das Leserecht entzogen hat. Auch hierfür gibt es prinzipiell Möglichkeiten, wie man so etwas herausfinden kann, aber da dies sehr stark vom Betriebssystem abhängt, werde ich in diesem Tutorial nicht explizit darauf eingehen. Wichtig ist nur, dass so etwas vorkommen kann, und dass ein berufstätiger Programmierer, auf solche Dinge achten muss.

Ein weiterer ungünstiger Umstand, ist der Anwender. Zum einen könnte eine eingegebene Pfadangabe nicht existieren und zum anderen könnte eine Datei, z.B. auf einem USB-Stick liegen, welche während der Dateiarbeit abgezogen wird. Auch hier sollten Vorkehrungen getroffen werden, dass das Programm nicht abstürzt bzw. sich aufhängt.

Was können Sie also tun? Nun, es gibt zwei gängige Herangehensweisen, welche in enger Kombination verwendet werden sollten. Zum einen kann man ganz paranoid haufenweise Funktionen bauen, die die verschiedensten Sachen im Vorfeld prüfen und zum anderen, sollte man um Dateizugriffe "try catch Statements" bauen. Das könnte dann folgendermaßen aussehen.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
					
// Wenn es die Datei gibt
if (FileExist(astrPath) && IsReadable(astrPath)) {
	try {
		// Dateizugriffe
	} catch (...) { // Wenn irgend ein Fehler/Ausnahme auftritt
		// Dieser Bereich wird ausgeführt, wenn es im Oberen zu
		// einem Absturz kommt
		printf("Beim Zugriff der Datei ist ein Fehler aufgetreten!");
	} // end of try
} // end of if
					

Sie können da sehr paranoid sein und im Zweifelsfall sollten Sie das auch, aber aus Gründen der Verständlichkeit, werde ich in folgenden Quelltexten darauf verzichten. Falls Sie im Web auf die Suche nach Codeschnipseln gehrn, dann wundern Sie sich nicht, wenn Sie sehr verschachtelte Konstrukte finden, denn diese wurden gemacht, um den von mir erwähnten Anfälligkeiten entgegen zu treten.

Zum Seitenanfang
Zum Inhaltsverzeichnis

© Copyright by Thomas Weiß, 2009 - 2012