zoukankan      html  css  js  c++  java
  • 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())
    	}
    }
    

      

  • 相关阅读:
    使用MyBatis生成插件
    关联源码及日志
    下载依赖
    框架简介及基本使用
    注解的本质 及 反射读取属性值
    元注解
    广告系统学习笔记(一)
    Nginx学习笔记(三)
    Nginx学习笔记(二)
    Nginx学习笔记(一)
  • 原文地址:https://www.cnblogs.com/howDo/p/3855901.html
Copyright © 2011-2022 走看看