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 :allright:

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 :? :roll:


MFG Lukaso

Verfasst: 29.11.2004 21:48
von GPI
Lukaso hat geschrieben:@GPI
Du sprichst in rätseln :? :roll:
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

Code: Alles auswählen

Result.w = FileExists(String)
versucht? Das ist glaub ich in der Helpfuncs Lib von Andreas Miethe dabei...

cya dige