广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Golang 文件操作:删除指定的文件方式
  • 686
分享到

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

2024-04-02 19:04:59 686人浏览 薄情痞子
摘要

我就废话不多说了,大家还是直接看代码吧~ package main import "os" func main () { err := os.Remove(logF

我就废话不多说了,大家还是直接看代码吧~


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

补充:[Golang]文件/文件夹一般操作:判断、复制、删除、遍历

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. 创建文件夹(如果文件夹不存在则创建)


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. 复制文件

复制文件过程中一定要注意将原始文件的权限也要复制过去,否则可能会导致可执行文件不能执行等问题。


//使用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()
 
 //获取源文件的权限
 fi, _ := srcFile.Stat()
 perm := fi.Mode()
 
 //desFile, err := os.Create(des)  //无法复制源文件的所有权限
 desFile, err := os.OpenFile(des, os.O_RDWR|os.O_CREATE|os.O_TRUNC, perm)  //复制源文件的所有权限
 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) {
 //获取源文件的权限
 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()
 
 //获取源文件的权限
 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. 复制整个文件夹


func CopyDir(srcPath, desPath string) error {
 //检查目录是否正确
 if srcInfo, err := os.Stat(srcPath); err != nil {
  return err
 } else {
  if !srcInfo.IsDir() {
   return errors.New("源路径不是一个正确的目录!")
  }
 }
 
 if desInfo, err := os.Stat(desPath); err != nil {
  return err
 } else {
  if !desInfo.IsDir() {
   return errors.New("目标路径不是一个正确的目录!")
  }
 }
 
 if strings.TrimSpace(srcPath) == strings.TrimSpace(desPath) {
  return errors.New("源路径与目标路径不能相同!")
 }
 
 err := filepath.Walk(srcPath, func(path string, f os.FileInfo, err error) error {
  if f == nil {
   return err
  }
 
  //复制目录是将源目录中的子目录复制到目标路径中,不包含源目录本身
  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. 遍历指定文件夹中的所有文件(不进入下一级子目录)



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. 遍历指定路径及其子目录中的所有文件



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)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。如有错误或未考虑完全的地方,望不吝赐教。

您可能感兴趣的文档:

--结束END--

本文标题: Golang 文件操作:删除指定的文件方式

本文链接: https://www.lsjlt.com/news/124978.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Golang 文件操作:删除指定的文件方式
    我就废话不多说了,大家还是直接看代码吧~ package main import "os" func main () { err := os.Remove(logF...
    99+
    2022-11-12
  • Golang 删除文件并递归删除空目录的操作
    目的: 删除文件之后,如果目录为空,递归删除为空的目录。 svr.dataDir指目录的最外层,递归删除目录的时候判断到这一层即可。 eg:/Users/danny/data f...
    99+
    2022-11-12
  • java io文件操作删除文件或文件夹的方法
    这篇文章主要讲解了“java io文件操作删除文件或文件夹的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java io文件操作删除文件或文件夹的方法”吧!一、删除文...
    99+
    2023-06-29
  • python怎么删除文件夹里的指定文件
    在Python中,可以使用os模块来删除文件夹内的指定文件。具体步骤如下: 首先,需要导入os模块: import os 使...
    99+
    2023-10-24
    python
  • C#如何删除指定文件或文件夹
    目录C#删除指定文件或文件夹C#根据路径删除文件或文件夹完整代码总结C#删除指定文件或文件夹 public static string deleteOneFile(string fi...
    99+
    2023-01-28
    C#删除指定文件 C#删除文件夹 C#删除文件
  • PHP 删除文件、文件夹方式
    在PHP中删除文件有多种方式,以下是其中几种常用的方式: 使用unlink()函数:该函数用于删除指定的文件。使用unlink()函数时,需要传入待删除文件的路径作为参数。示例代码如下: $file_...
    99+
    2023-09-01
    php 开发语言
  • Del怎么删除指定文件
    这篇文章主要介绍“Del怎么删除指定文件”,在日常操作中,相信很多人在Del怎么删除指定文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Del怎么删除指定文件”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-09
  • php怎么删除指定文件
    在PHP中,删除指定文件可以使用 `unlink()` 函数。该函数的语法如下:```phpbool unlink ( string...
    99+
    2023-10-10
    php
  • centos如何删除指定文件
    在CentOS中,你可以使用`rm`命令删除指定文件。以下是删除文件的命令格式:```shellrm [选项] 文件```你可以使用...
    99+
    2023-08-25
    centos
  • nodejs删除文件指定内容
    Node.js是目前最流行的服务器端JavaScript运行环境,它提供一系列强大的API和库,使得开发者可以轻松地处理文件、网络和其他操作。在本文中,我们将学习如何使用Node.js删除文件中的指定内容。要删除文件中的指定内容,我们需要遵...
    99+
    2023-05-14
  • linux删除指定文件的方法是什么
    在Linux中,可以使用以下命令来删除指定文件:1. 使用rm命令:rm是一个用于删除文件或目录的命令。使用该命令时需要注意,删除操...
    99+
    2023-10-09
    linux
  • java io文件操作删除文件或文件夹的7种方法
    目录一、删除文件或文件夹的四种基础方法二、如何删除整个目录或者目录中的部分文件前提准备2.1. walkFileTree与FileVisitor2.2.Files.walk2.3.传...
    99+
    2022-11-13
  • linux 删除指定文件夹外的其他所有(文件)文件夹
    文章目录 方法一. 删除指定文件夹外的其他所有文件夹命令:方法二. 删除指定文件夹外的其他所有文件夹命令:三. 其他方法(没有验证)1、方法1,比较麻烦的做法是:2、方法2,需要在当前文件夹中...
    99+
    2023-09-16
    linux 服务器 unix
  • 怎么用python删除指定文件
    您可以使用`os`模块来删除指定文件。以下是一个示例代码:```pythonimport os# 要删除的文件路径file_path...
    99+
    2023-10-08
    python
  • php中指定文件怎么删除
    这篇文章将为大家详细讲解有关php中指定文件怎么删除,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php中指定文件的删除方法:首先新建文件,使用【header()】方法设置页面的编码格式为【utf-8】;...
    99+
    2023-06-07
  • bat怎么延时删除指定文件夹中文件
    这篇文章主要为大家展示了“bat怎么延时删除指定文件夹中文件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“bat怎么延时删除指定文件夹中文件”这篇文章吧。一、bat延时xp程序中通过ping 1...
    99+
    2023-06-08
  • 利用shell命令删除指定的文件的方法
    今天为了省事文件内容都copy过来了。又为了省事,想了一想,用脚本比较开心。所以就写了一个shell脚本,在此做一个记录。 #!/bin/bash ls -li | tail -n +2 | cat -n read -p...
    99+
    2022-06-05
    shell 删除指定文件 shell命令删除文件
  • 怎么用bat删除指定文件夹
    您可以使用以下的Windows批处理脚本来删除指定文件夹:```batch@echo offset "folderPath=C:\p...
    99+
    2023-10-08
    bat
  • linux如何批量删除指定文件
    Linux提供了多种方式来批量删除指定文件,以下是几种常用的方法:1. 使用通配符删除:可以使用通配符来匹配指定的文件名模式,然后删...
    99+
    2023-09-15
    linux
  • Linux系统怎么删除指定文件
    Linux系统怎么删除指定文件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。命令格式:      find  指定的文件夹/ -name...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作