Tarkistetaan, onko hakemisto olemassa

Go:
Tarkistetaan, onko hakemisto olemassa

Kuinka:

Go:ssa os-paketti tarjoaa toiminnallisuuksia vuorovaikutukseen käyttöjärjestelmän kanssa, mukaan lukien tarkistuksen, löytyykö kansio. Näin voit tehdä sen:

package main

import (
    "fmt"
    "os"
)

// isDirExists tarkistaa, löytyykö kansio
func isDirExists(path string) bool {
    info, err := os.Stat(path)
    jos os.IsNotExist(err) {
        return false
    }
    return info.IsDir()
}

func main() {
    dirPath := "/tmp/exampleDir"

    if isDirExists(dirPath) {
        fmt.Printf("Kansio %s löytyy.\n", dirPath)
    } else {
        fmt.Printf("Kansiota %s ei löydy.\n", dirPath)
    }
}

Esimerkkituloste:

Kansio /tmp/exampleDir löytyy.

tai

Kansiota /tmp/exampleDir ei löydy.

Riippuen siitä, löytyykö /tmp/exampleDir.

Syväsukellus

Funktio os.Stat palauttaa FileInfo-rajapinnan ja virheen. Jos virhe on tyyppiä os.ErrNotExist, se tarkoittaa, että kansiota ei ole olemassa. Jos virhettä ei ole, tarkistamme vielä, viittaako polku todella kansioon IsDir()-metodin avulla FileInfo-rajapinnasta.

Tämä menetelmä erottuu yksinkertaisuutensa ja tehokkuutensa ansiosta, mutta on tärkeää huomata, että kansion olemassaolon tarkistaminen ennen operaatioita, kuten luominen tai kirjoittaminen, voi aiheuttaa kilpailutilanteita rinnakkaisissa ympäristöissä. Monissa skenaarioissa, erityisesti rinnakkaissovelluksissa, saattaa olla turvallisempaa yrittää suorittaa operaatio (esim. tiedoston luominen) ja käsitellä virheet jälkikäteen, sen sijaan että tarkistaisi ensin.

Historiallisesti tämä lähestymistapa on ollut yleinen ohjelmoinnissa sen suoraviivaisen logiikan vuoksi. Kuitenkin monisäikeisen ja rinnakkaisen laskennan kehitys edellyttää siirtymistä kohti kestävämpää virheiden käsittelyä ja välttämään ennakkoehdotarkistuksia kuten tämä missä mahdollista. Tämä ei vähennä sen hyödyllisyyttä yksinkertaisemmissa, yksisäikeisissä sovelluksissa tai skripteissä, joissa tällaiset olosuhteet ovat vähemmän huolenaihe.