濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > Golang 文件操作:刪除指定的文件方式

Golang 文件操作:刪除指定的文件方式

熱門(mén)標(biāo)簽:外呼系統(tǒng)用什么卡 評(píng)價(jià)高的400電話辦理 外呼系統(tǒng)顯本地手機(jī)號(hào) 涿州代理外呼系統(tǒng) 阿克蘇地圖標(biāo)注 電話機(jī)器人軟件免費(fèi) 壽光微信地圖標(biāo)注 百度地圖標(biāo)注后傳給手機(jī) excel地圖標(biāo)注分布數(shù)據(jù)

我就廢話不多說(shuō)了,大家還是直接看代碼吧~

package main 
import "os" 
func main () { 
    err := os.Remove(logFile) 
	if err != nil {
		// 刪除失敗 
	} else {
        // 刪除成功	 
	}
}

補(bǔ)充:[Golang]文件/文件夾一般操作:判斷、復(fù)制、刪除、遍歷

1. 檢查指定路徑是否為文件夾

func IsDir(name string) bool {
 if info, err := os.Stat(name); err == nil {
  return info.IsDir()
 }
 return false
}

2. 檢查文件是否存在

func FileIsExisted(filename string) bool {
 existed := true
 if _, err := os.Stat(filename); os.IsNotExist(err) {
  existed = false
 }
 return existed
}

3. 創(chuàng)建文件夾(如果文件夾不存在則創(chuàng)建)

func MakeDir(dir string) error {
 if !FileIsExisted(dir) {
  if err := os.MkdirAll(dir, 0777); err != nil { //os.ModePerm
   fmt.Println("MakeDir failed:", err)
   return err
  }
 }
 return nil
}

4. 復(fù)制文件

復(fù)制文件過(guò)程中一定要注意將原始文件的權(quán)限也要復(fù)制過(guò)去,否則可能會(huì)導(dǎo)致可執(zhí)行文件不能執(zhí)行等問(wèn)題。

//使用io.Copy
func CopyFile(src, des string) (written int64, err error) {
 srcFile, err := os.Open(src)
 if err != nil {
  return 0, err
 }
 defer srcFile.Close()
 
 //獲取源文件的權(quán)限
 fi, _ := srcFile.Stat()
 perm := fi.Mode()
 
 //desFile, err := os.Create(des)  //無(wú)法復(fù)制源文件的所有權(quán)限
 desFile, err := os.OpenFile(des, os.O_RDWR|os.O_CREATE|os.O_TRUNC, perm)  //復(fù)制源文件的所有權(quán)限
 if err != nil {
  return 0, err
 }
 defer desFile.Close()
 
 return io.Copy(desFile, srcFile)
} 
 
//使用ioutil.WriteFile()和ioutil.ReadFile()
func CopyFile2(src, des string) (written int64, err error) {
 //獲取源文件的權(quán)限
 srcFile, err := os.Open(src)
 if err != nil {
  return 0, err
 }
 fi, _ := srcFile.Stat()
 perm := fi.Mode()
 srcFile.Close()
 
 input, err := ioutil.ReadFile(src)
 if err != nil {
  return 0, err
 }
 
 err = ioutil.WriteFile(des, input, perm)
 if err != nil {
  return 0, err
 }
 
 return int64(len(input)), nil
} 
 
//使用os.Read()和os.Write()
func CopyFile3(src, des string, bufSize int) (written int64, err error) {
 if bufSize = 0 {
  bufSize = 1*1024*1024   //1M
 }
 buf := make([]byte, bufSize)
 
 srcFile, err := os.Open(src)
 if err != nil {
  return 0, err
 }
 defer srcFile.Close()
 
 //獲取源文件的權(quán)限
 fi, _ := srcFile.Stat()
 perm := fi.Mode()
 
 desFile, err := os.OpenFile(des, os.O_CREATE|os.O_RDWR|os.O_TRUNC, perm)
 if err != nil {
  return 0, err
 }
 defer desFile.Close()
 
 count := 0
 for {
  n, err := srcFile.Read(buf)
  if err != nil  err != io.EOF {
   return 0, err
  }
 
  if n == 0 {
   break
  }
 
  if wn, err := desFile.Write(buf[:n]); err != nil {
   return 0, err
  } else {
   count += wn
  }
 }
 
 return int64(count), nil
}

5. 復(fù)制整個(gè)文件夾

func CopyDir(srcPath, desPath string) error {
 //檢查目錄是否正確
 if srcInfo, err := os.Stat(srcPath); err != nil {
  return err
 } else {
  if !srcInfo.IsDir() {
   return errors.New("源路徑不是一個(gè)正確的目錄!")
  }
 }
 
 if desInfo, err := os.Stat(desPath); err != nil {
  return err
 } else {
  if !desInfo.IsDir() {
   return errors.New("目標(biāo)路徑不是一個(gè)正確的目錄!")
  }
 }
 
 if strings.TrimSpace(srcPath) == strings.TrimSpace(desPath) {
  return errors.New("源路徑與目標(biāo)路徑不能相同!")
 }
 
 err := filepath.Walk(srcPath, func(path string, f os.FileInfo, err error) error {
  if f == nil {
   return err
  }
 
  //復(fù)制目錄是將源目錄中的子目錄復(fù)制到目標(biāo)路徑中,不包含源目錄本身
  if path == srcPath {
   return nil
  }
 
  //生成新路徑
  destNewPath := strings.Replace(path, srcPath, desPath, -1)
 
  if !f.IsDir() {
   CopyFile(path, destNewPath)
  } else {
   if !FileIsExisted(destNewPath) {
    return MakeDir(destNewPath)
   }
  }
 
  return nil
 })
 
 return err
}

6. 遍歷指定文件夾中的所有文件(不進(jìn)入下一級(jí)子目錄)

/* 獲取指定路徑下的所有文件,只搜索當(dāng)前路徑,不進(jìn)入下一級(jí)目錄,可匹配后綴過(guò)濾(suffix為空則不過(guò)濾)*/
func ListDir(dir, suffix string) (files []string, err error) {
   files = []string{}
 
   _dir, err := ioutil.ReadDir(dir)
   if err != nil {
      return nil, err
   }
 
   suffix = strings.ToLower(suffix)  //匹配后綴
 
   for _, _file := range _dir {
      if _file.IsDir() {
         continue   //忽略目錄
      }
      if len(suffix) == 0 || strings.HasSuffix(strings.ToLower(_file.Name()), suffix) {
         //文件后綴匹配
         files = append(files, path.Join(dir, _file.Name()))
      }
   }
 
   return files, nil
}

7. 遍歷指定路徑及其子目錄中的所有文件

/* 獲取指定路徑下以及所有子目錄下的所有文件,可匹配后綴過(guò)濾(suffix為空則不過(guò)濾)*/
func WalkDir(dir, suffix string) (files []string, err error) {
 files = []string{} 
 err = filepath.Walk(dir, func(fname string, fi os.FileInfo, err error) error {
  if fi.IsDir() {
   //忽略目錄
   return nil
  }
 
  if len(suffix) == 0 || strings.HasSuffix(strings.ToLower(fi.Name()), suffix) {
   //文件后綴匹配
   files = append(files, fname)
  }
 
  return nil
 })
 
 return files, err
}

8. 刪除文件

os.Remove(filename)

9. 刪除文件夾及其包含的所有子目錄和所有文件

os.RemoveAll(dir)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • 解決go build不去vendor下查找包的問(wèn)題
  • 解決GOPATH在GOLAND中的坑
  • golang 如何刪除二進(jìn)制文件中的源碼路徑信息
  • Golang 刪除文件并遞歸刪除空目錄的操作
  • go run main.go 一直提示找不到包的解決方案

標(biāo)簽:汕頭 重慶 雞西 欽州 吐魯番 梅河口 蘭州 銅川

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Golang 文件操作:刪除指定的文件方式》,本文關(guān)鍵詞  Golang,文件,操作,刪除,指,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Golang 文件操作:刪除指定的文件方式》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Golang 文件操作:刪除指定的文件方式的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    九龙坡区| 汝城县| 漳州市| 化州市| 鹤峰县| 海门市| 迭部县| 体育| 万安县| 旬阳县| 长岛县| 都兰县| 睢宁县| 昭觉县| 南皮县| 安化县| 房山区| 南安市| 光泽县| 南漳县| 武宣县| 饶平县| 南充市| 马关县| 高唐县| 佳木斯市| 安徽省| 东阳市| 台南县| 高要市| 宜章县| 乌拉特中旗| 桃江县| 曲阜市| 台南县| 广东省| 临邑县| 元谋县| 鄂伦春自治旗| 锦屏县| 探索|