Cum pentru a determina dacă un fișier de pe disc

Adevărata Această metodă are anumite dezavantaje, care reduc foarte mult aplicarea practică:

  • Acesta nu va funcționa dacă nu ați instalat Internet Explorer 4.0 sau mai mare, care poate fi destul de probabil pe computerele care execută versiuni anterioare de Windows 95 și Windows NT 4.0.
  • Funcția PathFileExists () nu acceptă nume de fișiere UNC.

Metoda 8 (CreateFile)

Cele mai evidente și metoda cea mai greoaie.

Metoda 9 (Pure C ++ Metoda std :: ifstream. Ifstream)

Această metodă este de a crea un obiect temporar de clasa ifstream .Daca fișierul cu numele specificat nu există atunci operatorul void * () din această clasă returnează un pointer NULL - altfel returnează un pointer la obiectul creat în sine (acest lucru). Această valoare este verificată pentru indicatorul NULL - și. toate.

sau mai degrabă aproape toate =)

În acest cod, ifstream este basic_ifstream typedef > Ifstream; Dacă utilizați fișierele header vechi (extensia .h) - atunci sunt ifstream - acest lucru nu este nici un typedef -, ci o clasă reală. Și totul ar fi bine - în cazul în care nu au fost pentru un singur lucru - în acest caz, proiectantul cu numele de fișier ca parametru pentru a crea un fișier (dacă există), și, în orice caz, verificați existența fișier va da un rezultat pozitiv. Faptul că este necesară ifstream „vechi“ „și el să specifice în mod explicit că nu ar trebui să creeze fișierul adăugând ios de pavilion. nocreate în al doilea parametru constructorului. Și aici este codul în sine pentru această ocazie:

Această metodă este bine că el este 100% să fie portabil - adică, folosind doar posibilitatea de a limbajului C ++ (prin biblioteca standard - care este o parte din ea).

Metoda 10 (NET)

Vă aduc o veste bună, toată suferința noastră se va încheia în .NET. Pentru a clarifica existența unui fișier pe care îl puteți apela pur și simplu metoda clasei fileexists File. De exemplu:

Metoda 11 (Script)

Nici una dintre aceste metode nu vor lucra de la un document .html. Dar, dintr-un Scripting.FileSystemObject script disponibil pentru noi, care este de ajuns.

Putem folosi bine Scripting.FileSystemObject și COM-modul:

De fapt, acesta este un mod foarte răsucite pentru a apela toate de același acces funcții () din metoda 1, cu diferența că FileSystemObject funcționează cu nume de fișiere în UNICODE și sub WindowsNT / 2k transmite în mod direct numele fișierului, și sub Windows 9x / Me (și chiar 3.1 cu Internet Explorer!) îl transformă în ANSI.