Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk memadam fail dalam golang

Bagaimana untuk memadam fail dalam golang

青灯夜游
青灯夜游asal
2022-12-19 10:10:088307semak imbas

Dalam golang, anda boleh menggunakan fungsi Remove() atau RemoveAll() terbina dalam dalam pakej os untuk memadam fail, sintaksnya ialah "os.Remove(path)" atau "os.RemoveAll(path )". Apabila memadam fail, tidak terdapat banyak perbezaan antara kaedah RemoveAll() dan Remove() tetapi apabila memadamkan direktori, Remove() hanya boleh memadam direktori kosong, manakala RemoveAll() boleh memadamkannya tanpa sebarang sekatan.

Bagaimana untuk memadam fail dalam golang

Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.

Di golang, hampir semua operasi fail seperti pemadaman fail, penciptaan fail, pembacaan fail dan penulisan fail diselesaikan melalui pakej os. Jadi jika anda ingin menguruskan fail di Golang, anda perlu menggunakan pakej os terbina dalam Golang.

Untuk memadamkan fail dalam Golang, gunakan fungsi os.Remove() atau os.RemoveAll(). Fungsi os.Remove() dan os.RemoveAll() ialah fungsi Golang terbina dalam untuk memadamkan fail. Sediakan laluan fail ke fail, yang boleh dipadamkan. Ia memadam fail bernama atau direktori (kosong).

Fungsi RemoveAll digunakan sama seperti Remove. Perbezaannya ialah ia akan memadam semua subdirektori dan fail secara rekursif. Hari ini kita akan melihat perbezaan khusus antara keduanya.

Alih keluar fail

os.Remove()

Seterusnya, kami menggunakan os Kaedah Remove() memadamkan fail kerana kita perlu menggunakan kod untuk mengesahkannya Sebelum memadam, kita perlu mencipta fail test.txt dan kemudian memadamnya. Berikut ialah kod khusus:

package main

import ( 
    "os"
    "fmt"
)
 
func main () {
 
	testFile := "test.txt"
	_, err := os.Create(testFile) //创建文件
	if err != nil {
		fmt.Println("文件创建失败")
	}
	
        // 使用 os.Remove() 删除文件
        err = os.Remove(testFile)
 
	if err != nil {
		fmt.Println("删除失败")
	} else {
		fmt.Println("删除成功")
	}
}

os.RemoveAll()

Baiklah, melalui contoh di atas, kita dapat melihat os.Remove ( ) kaedah masih sangat mudah untuk memadam fail. Jadi, mari kita lihat prestasi os.RemoveAll() Ia masih sama seperti sebelum ini. Kod yang diubah suai adalah seperti berikut:

package main

import (
	"os"
	"fmt"
)
 
func main () {
 
	testFile := "test.txt"
	_, err := os.Create(testFile) //创建文件
	if err != nil {
		fmt.Println("文件创建失败")
	}
	
        // 使用 os.RemoveAll() 删除文件
	err = os.RemoveAll(testFile)
 
	if err != nil {
		fmt.Println("删除失败")
	} else {
		fmt.Println("删除成功")
	}
}

Hasil pelaksanaan kod:

Bagaimana untuk memadam fail dalam golang

Padam direktori

os.Remove()

Apakah kesan penggunaan os.Remove() untuk memadamkan direktori? Seterusnya, lihat terus pada kod!

Contoh kod:

package main

import (
	"os"
	"fmt"
)
 
func main () {
 
	testDir := "d1/d2/d3"
	// 创建多级目录
	err := os.MkdirAll(testDir, os.ModePerm)
	if 	err != nil {
		fmt.Println("文件创建失败", err)
	}
        // 使用 os.Remove() 删除文件
	err = os.Remove(testDir)
 
	if err != nil {
		fmt.Println("删除失败", err)
	} else {
		fmt.Println("删除成功")
	}
}

Hasil pelaksanaan kod:

Bagaimana untuk memadam fail dalam golang

os.RemoveAll()

Jadi, apakah kesan pemadaman direktori menggunakan kaedah os.RemoveAll()? Mari lihat kodnya juga!

Kod contoh:

package main

import (
	"os"
	"fmt"
)
 
func main () {
 
	testDir := "d1/d2/d3"
	// 创建多级目录
	err := os.MkdirAll(testDir, os.ModePerm)
	if 	err != nil {
		fmt.Println("文件创建失败", err)
	}
        // 使用 os.RemoveAll() 删除文件
	err = os.RemoveAll(testDir)
 
	if err != nil {
		fmt.Println("删除失败")
	} else {
		fmt.Println("删除成功")
	}
}

Hasil pelaksanaan kod:

Bagaimana untuk memadam fail dalam golang

Sekarang kita dapati bahawa apabila memadam direktori, kedua-dua kaedah mempunyai kesan yang sama, adakah tiada perbezaan antara keduanya? Jawapannya tidak. Masih menggunakan kod pemadaman direktori di atas, apakah hasilnya jika kita memadam direktori d2 dan bukannya direktori d3?

Selepas mengubah suai kod, akhirnya kami mendapati bahawa tiada masalah dengan kaedah os.RemoveAll(), tetapi os.Remove() melaporkan ralat Mesej ralat adalah seperti berikut:

remove d1/d2/: directory not empty

Ya, direktori d2 Ia tidak kosong, kerana terdapat juga subdirektori d3 Pada ketika ini, kami akhirnya menemui perbezaan antara os.RemoveAll() dan os.Remove().

Nota:

Tiada banyak perbezaan antara kaedah os.RemoveAll() dan os.Remove() apabila memadam fail. Walau bagaimanapun, apabila memadamkan direktori, os.Remove() hanya boleh memadamkan direktori kosong, manakala os.RemoveAll() boleh memadamkannya tanpa sebarang sekatan.

[Cadangan berkaitan: Pergi tutorial video, Pengajaran pengaturcaraan]

Atas ialah kandungan terperinci Bagaimana untuk memadam fail dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn