• Go实现查找目录下(包括子目录)替换文件内容


    【功能】

        按指定的目录查找出文件,如果有子目录,子目录也将进行搜索,将其中的文件内容进行替换。

    【缺陷】

        1. 没有过滤出文本文件

        2. 当文件过大时,效率不高

    【代码】

    package main
    
    import (
    	"flag"
    	"fmt"
    	"io/ioutil"
    	"os"
    	"path/filepath"
    	"strings"
    )
    
    type ReplaceHelper struct {
    	Root    string //根目录
    	OldText string //需要替换的文本
    	NewText string //新的文本
    }
    
    func (h *ReplaceHelper) DoWrok() error {
    
    	return filepath.Walk(h.Root, h.walkCallback)
    
    }
    
    func (h ReplaceHelper) walkCallback(path string, f os.FileInfo, err error) error {
    
    	if err != nil {
    		return err
    	}
    	if f == nil {
    		return nil
    	}
    	if f.IsDir() {
    		//fmt.Pringln("DIR:",path)
    		return nil
    	}
    
    	//文件类型需要进行过滤
    
    	buf, err := ioutil.ReadFile(path)
    	if err != nil {
    		//err
    		return err
    	}
    	content := string(buf)
    
    	//替换
    	newContent := strings.Replace(content, h.OldText, h.NewText, -1)
    
    	//重新写入
    	ioutil.WriteFile(path, []byte(newContent), 0)
    
    	return err
    }
    
    func main() {
    
    	flag.Parse()
    	helper := ReplaceHelper{
    		Root:    flag.Arg(0),
    		OldText: flag.Arg(1),
    		NewText: flag.Arg(2),
    	}
    	err := helper.DoWrok()
    	if err == nil {
    		fmt.Println("done!")
    	} else {
    		fmt.Println("error:", err.Error())
    	}
    }
    

      

  • 相关阅读:
    组合数学
    gcd和lcm
    快速幂
    线性求逆元
    5月月赛(* ̄︿ ̄)
    通往奥格瑞玛的道路
    Dijkstra学习笔记
    动态规划笔记(2)
    美军战略指导:《维持美国的世界领导力:21世纪国防的优先事项》
    ACM/ICPC2016沈阳网络赛(不完全)解题报告
  • 原文地址:https://www.cnblogs.com/howDo/p/3855901.html
Copyright © 2020-2023  润新知