网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
在日常开发中,我们有时需要删除指定目录下除指定文件以外的所有文件。例如,我们可能需要删除某个项目下所有生成的临时文件,或者删除某个目录下所有过期的文件。
Go语言提供了丰富的文件操作函数,我们可以使用这些函数来实现删除文件的需求。
代码示例
以下代码演示了如何使用 Go语言删除指定目录下除指定文件以外的所有文件:
package main
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
)
func main() {
// 要删除文件的目录
dirPath := "/path/to/directory"
// 要保留的文件名
keepFileName := "keep.txt"
// 读取目录中的所有文件
files, err := ioutil.ReadDir(dirPath)
if err != nil {
fmt.Println(err)
return
}
// 遍历所有文件
for \_, file := range files {
// 如果文件不是要保留的文件
if file.Name() != keepFileName {
// 删除文件
err := os.Remove(filepath.Join(dirPath, file.Name()))
if err != nil {
fmt.Println(err)
return
}
}
}
fmt.Println("删除成功")
}
该代码首先定义了要删除文件的目录 (dirPath
) 和要保留的文件名 (keepFileName
)。然后,它使用 ioutil.ReadDir()
函数读取目录中的所有文件。接着,它遍历所有文件,并使用 os.Remove()
函数删除不是要保留的文件。最后,它输出 “删除成功” 消息。
请注意,该代码会删除目录中所有不是 keepFileName
的文件,包括子目录中的文件。如果您只想删除根目录下的文件,请修改 filepath.Join(dirPath, file.Name())
函数的参数。
函数设计
为了提高代码的复用性,我们可以将上述代码封装成一个函数:
package main
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
)
// 删除指定目录下除指定文件以外的所有文件
func DeleteFiles(dirPath string, keepFileNames []string) error {
// 读取目录中的所有文件
files, err := ioutil.ReadDir(dirPath)
if err != nil {
return err
}
// 遍历所有文件
for \_, file := range files {
// 判断文件是否需要保留
keep := false
for \_, keepFileName := range keepFileNames {
if file.Name() == keepFileName {
keep = true
break
}
}
// 如果文件不需要保留,则删除它
if !keep {
err := os.Remove(filepath.Join(dirPath, file.Name()))
![img](https://img-blog.csdnimg.cn/img_convert/0421ed4f3bca9e905148f747422ff204.png)
![img](https://img-blog.csdnimg.cn/img_convert/6b3f899e457dfceae867a16c68ca97cb.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618658159)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
topics/618658159)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**