C:
Tarkistetaan, onko hakemisto olemassa
Kuinka:
C:ssä hakemiston olemassaolon voi tarkistaa käyttämällä stat
-funktiota, joka hakee tietoja tiedostosta tai hakemistosta tietyssä polussa. Sen jälkeen S_ISDIR
-makroa sys/stat.h
-tiedostosta käytetään arvioimaan, vastaako haetut tiedot hakemistoa.
Tässä on miten voit käyttää stat
- ja S_ISDIR
-toimintoja tarkistaaksesi, onko hakemisto olemassa:
#include <stdio.h>
#include <sys/stat.h>
int main() {
struct stat stats;
// Tarkistettavan hakemiston polku
char *dirPath = "/polku/hakemistoon";
// Saa polun tilan
int result = stat(dirPath, &stats);
// Tarkistaa, onko hakemisto olemassa
if (result == 0 && S_ISDIR(stats.st_mode)) {
printf("Hakemisto on olemassa.\n");
} else {
printf("Hakemistoa ei ole olemassa.\n");
}
return 0;
}
Esimerkkituloste:
Hakemisto on olemassa.
Tai, jos hakemistoa ei ole olemassa:
Hakemistoa ei ole olemassa.
Syvemmälle:
stat
-rakenne ja -funktio ovat olleet osa C-ohjelmointikieltä vuosikymmeniä, polveutuen Unixista. Ne tarjoavat standardoidun tavan hakea tietoa tiedostojärjestelmästä, joka, vaikkakin on suhteellisen matalan tason, on laajasti käytössä sen yksinkertaisuuden ja suoran pääsyn tiedostojärjestelmän metatietoihin vuoksi.
Historiallisesti tiedostojen ja hakemistojen olemassaolon ja ominaisuuksien tarkistaminen stat
-funktiolla ja sen johdannaisilla (kuten fstat
ja lstat
) on ollut yleinen lähestymistapa. Kuitenkin nämä funktiot suoraan vuorovaikuttavat käyttöjärjestelmän ytimen kanssa, mikä saattaa tuoda mukanaan ylimääräistä kuormitusta ja potentiaalisia virheitä, jos niitä ei käsitellä oikein.
Uusissa projekteissa tai työskenneltäessä korkean tason skenaarioissa, ohjelmoijat saattavat valita abstraktimmat tiedostonkäsittelymekanismit, joita nykyaikaiset kehykset tai kirjastot tarjoavat ja jotka käsittelevät virheitä sulavammin ja tarjoavat yksinkertaisemman API:n. Silti, stat
-funktion ymmärtäminen ja osaaminen pysyy arvokkaana taitona skenaarioissa, jotka vaativat suoraa tiedostojärjestelmän manipulointia, kuten järjestelmien ohjelmoinnissa tai työskenneltäessä rajoitetuissa ympäristöissä, joissa suurien kirjastojen riippuvuuksien olemassaolo ei ole mahdollista.