ファイルを使用してゴラン.


今日も短い一日.私はいくつかの移動を再度再生し、それを書き留めたいと思った.私がしたもののいくつかに複数のオプションがあります.したがって、これは包括的なガイドではありません.
ファイルが存在するかどうかを調べる
func fileExists(fileName string) (bool, error) {
    info, err := os.Stat(fileName)
    if err != nil {
        if os.IsNotExist(err) {
            return false, nil
        } else {
            return false, err
        }
    }
    return !info.IsDir(), nil
}
ファイルを作成し、それにテキストを書き込む
created, err = os.Create("test.txt")
if err != nil {
    log.Fatal(err)
}

//write to text file
//i ignore the number of bytes writen here
_, err = created.WriteString("Hello World")
if err != nil {
    log.Fatal(err)
}

//Close the file so it can be used later
created.Close()
ここで教訓を学んだ.私の最初のバージョンでは、Deferを書きました.close ()しかし、後で問題に遭遇したとき、私はファイルから読みたかったです.あなたが同じ関数でそれを読みたいなら、ファイルを閉じる必要があります.
ファイルの削除
created, err = os.Create("toDelete.txt")
if err != nil {
   log.Fatal(err)
}
created.Close()

err := os.Remove("toDelete.txt")
if err != nil {
   log.Fatal(e)
}

テキストファイルから読み込む
anotherFile, err := os.Open("anotherFile.txt")
if err != nil {
    log.Fatal(err)
}
scanner := bufio.NewScanner(anotherFile)
for scanner.Scan() {
    fmt.Println(scanner.Text())
}

if err := scanner.Err(); err != nil {
    log.Fatal(err)
}
ここではあまり愛着しない.私は遅く行くの詳細を参照してください.まだ言語について私の心を構成していない.
ファイルをコピーまたは移動する
//copy a file
bytesRead, err := ioutil.ReadFile("fileToCopy.txt")
if err != nil {
    log.Fatal(err)
}
ioutil.WriteFile("cptrgt/CopyTarget.txt", bytesRead, os.ModePerm)

//Move a file
err = os.Rename("oldFile.txt", "cptrgt/newFile.txt")
if err != nil {
    log.Fatal(err)
}
ファイルを動かす方法が好きでない.カタストロフィーではなく、本当に直感的でもない.まだコピー速度をテストしていない.
フォルダの作成と再帰削除
//create a new Folder
if err := os.Mkdir("cptrgt", os.ModePerm); err != nil {
    log.Fatal(err)
}

//delete a folder recursively
err := os.RemoveAll("cptrgt")
if err != nil {
    log.Fatal(err)
}
私の最後のポストの後、私は構文について満足していました、しかし、現在、私はよりつまずかなくなります.正直に言うと、私はクイックコマンドラインツールのためにgoで売られていないと言うでしょう.私は素晴らしいパフォーマンスと簡単な展開を見るが、現時点では、Python、JavaまたはPowerShellのためにそれを交換しません.しかし、私は学び続けます、そして、多分、私は確信しています.