• 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())
    	}
    }
    

      

  • 相关阅读:
    如何读入位图(五)
    如何读入位图(四)
    绘制正弦曲线
    图像灰度均衡
    色彩填充及使用
    彩色扇形
    如何读入位图(三)
    ARCGIS FOR SILVERLIGHT Layer
    sqlserver2008多数据库操作(未完)
    SQLSERVER 2008 远程无法连接问题
  • 原文地址:https://www.cnblogs.com/howDo/p/3855901.html
Copyright © 2020-2023  润新知