Seite 1 von 1
Schauen ob Datei existiert, aber schnell!
Verfasst: 29.11.2004 18:36
von Lukaso
Hallo,
ich bräuchte ne methode, die Checkt ob eine Datei existiert, ich benutze momentan "FileSize(file) > 0", nur ist mir das ein bißchen zu Langsam, ich möchte eigentlich NUR schauen ob die Datei existiert....
Villeicht kennt von euch jemand was besseres?
Danke
MFG Lukaso
Verfasst: 29.11.2004 18:51
von helpy
Hi,
Zuerst mal: "FileSize(file) > 0" stimmt nicht! Du musst "FileSize(file) >= 0" verwenden, denn es gibt ja auch Dateien mit einer Größe von 0 Byte.
Ansonsten sieh Dir die API-Funktionen durch ...
cu, helpy
Verfasst: 29.11.2004 18:58
von bobobo
geht readfile() nicht??
Code: Alles auswählen
If ReadFile(0,"C:\erwin.txt") =0
MessageRequester("","die Datei c:\erwin.txt! ist nicht vorhanden",0)
Else
CloseFile(0)
MessageRequester("","C:\erwin.txt ist sehr wohl vorhanden",0)
EndIf
Verfasst: 29.11.2004 19:55
von GPI
Um eine Dateilänge zu finden, muß du das Inhaltsverzeichnis durchforsten. Wenn du rausfinden willst, ob eine Datei exestiert, mußt du das Inhaltsverzeichnis durchforsten....
Ansonsten: Wie die Dateien nur aus bestimmte Ordner kommen können: VOrher komplett einlesen.
Verfasst: 29.11.2004 21:12
von Lukaso
@helpy
Ja, du hast recht, aber ich denke kaum, dass ich 0Byte Mp3-Dateien abspielen kann
@bobobo
Danke für deinen Vorschlag, nur dauert das noch um einiges länger, alls FileSize
@GPI
Du sprichst in rätseln
MFG Lukaso
Verfasst: 29.11.2004 21:48
von GPI
Lukaso hat geschrieben:@GPI
Du sprichst in rätseln
Einfach: in Inhaltsverzeichnis der Festplatte sind alle Dateinamen größe, länge, start-in-datenbereich-der-hdd, Attribute etc. eingetragen.
Du überprüft momentan die Dateilänge. Für die Dateilänge muß man halt dieses Inhaltsverzeichnis überprüfen. Jenachdem könntest du auch die directory-Commandos benutzen, die könnten ein tick schneller sein. Ansonsten mußt du immer in inhaltsverzeichnis reinschauen und das liegt nun mal auf der Festplatte...
Wenn du jetzt aber viele dateien in einen bestimmen Ordner überprüfen willst, dann empfielt es sich, dieses Verzeichnis komplett in eine Array/LinkedList zu laden, weil nun mal ein Speicherzugriff ein tick schneller ist als ein HDD-Zugriff.
Verfasst: 29.11.2004 23:38
von MLK
MD5 ist mehr als doppelt so schnell!
Code: Alles auswählen
start=ElapsedMilliseconds()
For i=1 To 100000
MD5FileFingerprint("c:\michgibtsnicht.abc")
Next
MD5=ElapsedMilliseconds()-start
start=ElapsedMilliseconds()
For i=1 To 100000
FileSize("c:\michgibtsnicht.abc")
Next
FS=ElapsedMilliseconds()-start
MessageRequester("","MD5: "+Str(MD5)+#CRLF$+"FileSize: "+Str(FS))
Verfasst: 29.11.2004 23:44
von wichtel
Bei mir ist Filesize am schnellsten:
???
Wenn die Datei nicht existiert...
Wenn die Datei existiert dann braucht MD5 recht lange
Code: Alles auswählen
start=ElapsedMilliseconds()
For i=1 To 100000
MD5FileFingerprint("c:\michgibtsnicht.abc")
Next
MD5=ElapsedMilliseconds()-start
start=ElapsedMilliseconds()
For i=1 To 100000
FileSize("c:\michgibtsnicht.abc")
Next
FS=ElapsedMilliseconds()-start
start=ElapsedMilliseconds()
For i=1 To 100000
ReadFile(0,"c:\michgibtsnicht.abc")
Next
OF=ElapsedMilliseconds()-start
MessageRequester("","MD5: "+Str(MD5)+#CRLF$+"FileSize: "+Str(FS)+#crlf$+"Readfile: "+Str(OF))
Verfasst: 30.11.2004 09:42
von dige
Schon mal mit
versucht? Das ist glaub ich in der Helpfuncs Lib von Andreas Miethe dabei...
cya dige