gf

package module
v1.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 18, 2023 License: Apache-2.0 Imports: 6 Imported by: 4

README

gf

介绍

gf是一个使用Go编写的文件/文本管理模块,通过管道的方式可以快速实现复杂的需求

功能清单

  • 文本增删改查
  • 文件/文件夹增删改

安装

go get -u gitee.com/liumou_site/gf

使用说明

文件/文件夹管理
package main

import (
    "strings"
    "gitee.com/liumou_site/gf"
    "gitee.com/liumou_site/logger"
)

func Mkdir() {
	f := gf.File("./text/dir")
	f.Mkdir("./text/dir", 0666)
	if f.Err != nil {
		logger.Error("创建失败")
	} else {
		logger.Info("创建成功")
	}
}

func WriteTxtAppend() {
	f := gf.File("text/user.txt")
	txt := strings.Split("第一行 第二行 第三行 第四行", " ")
	for _, i := range txt {
		f.WriteTxtAppend(i, true)
		if f.Err != nil {
			logger.Error("写入失败: ", i)
		} else {
			logger.Info("写入成功: ", i)
		}
	}
}
func main()  {
    Mkdir()
    WriteTxtAppend()
}

文本字符串管理Demo1
package main

import (
	"fmt"
	"gitee.com/liumou_site/gf"
	"gitee.com/liumou_site/logger"
)

func main() {
	fmt.Println("坐公交也用券")

	logger.Debug("通过读取文件获取内容进行截取")
	// 对应Shell: sed -n 2p text/col.txt | awk '{print $2}'
	txt := gf.ReadFile("txt/gf.txt").GetText().Line(1).Column(2, " ").Text
	logger.Info("获取内容: ", txt)

	logger.Debug("通过赋值进行截取")
	t := "第一行 第二列\n第二行 第二列 第三列"
	st := gf.ReadFile("demo")             // 传入一个不存在的文件名称
	st.Text = t                           // 直接赋值字符串
	get := st.Line(1).Column(1, " ").Text // 对行列进行截取
	logger.Info("截取字符串内容: ", get)
}

效果

坐公交也用券
[2023-01-18 15:12:52] [DEBG] [gf.go:12] 通过读取文件获取内容进行截取
[2023-01-18 15:12:52] [INFO] [gf.go:15] 获取内容:  第二列

[2023-01-18 15:12:52] [DEBG] [gf.go:17] 通过赋值进行截取
[2023-01-18 15:12:52] [INFO] [gf.go:22] 截取字符串内容:  第二行
文本管理Demo2
package main

import (
	"testing"
	"fmt"
	"gitee.com/liumou_site/gf"
	"gitee.com/liumou_site/logger"
)
func Read() {
	f := gf.ReadFile("./text/user.txt").GetText()
	if f.Err != nil {
		logger.Error("读取失败: ", f.Err.Error())
	} else {
		logger.Info("所有内容读取成功")
		fmt.Println(f.Text)
	}
	f.Line(1) // 第一行是 0
	if f.Err == nil {
		logger.Info("第二行内容: ", f.Text)
	} else {
		logger.Error("获取失败: ", f.Err.Error())
	}
}

func ReadLineRange() {
	f := gf.ReadFile("./text/user.txt").GetText()
	f.LineRange(1, 4)
	if f.Err != nil {
		logger.Error("读取失败: ", f.Err.Error())
	} else {
		logger.Info("读取成功")
		fmt.Println(f.Text)
	}
}
func main()  {
    Read()
	ReadLineRange()
}

效果

[2023-01-17 16:12:32] [INFO] [read_test.go:15] 所有内容读取成功
刘某
林某
梁某
第一行
第二行
第三行
第四行
第一行
第二行
第三行
第四行

[2023-01-17 16:12:33] [INFO] [read_test.go:20] 第二行内容:  林某

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Version

func Version()

Types

type FileApi

type FileApi struct {
	Success  bool   // 是否操作成功
	AbsPath  string // 文件绝对路径
	FileName string // 需要操作的文件名
	Err      error  // 错误信息(读写操作错误的信息)
	Text     string // 最终字符串信息(例如文本读取信息)
	IsDirs   bool   // 是否属于文件夹
	IsFiles  bool   // 是否属于文件
	ExIst    bool   // 是否存在对象
	// contains filtered or unexported fields
}

func File added in v1.0.1

func File(filename string) *FileApi

func (*FileApi) DeleteFile

func (fi *FileApi) DeleteFile()

DeleteFile 删除文件

func (*FileApi) EchoAdd

func (fi *FileApi) EchoAdd(text, filename string, wrap bool)

EchoAdd 写入文本到文件中,当文件已存在则覆盖,当文件不存在则创建,默认权限: 0666

func (*FileApi) Exists

func (fi *FileApi) Exists()

Exists 判断路径是否存在

func (*FileApi) IsDir

func (fi *FileApi) IsDir()

IsDir 判断是否属于文件夹

func (*FileApi) IsFile

func (fi *FileApi) IsFile()

IsFile 判断是否属于文件

func (*FileApi) Mkdir

func (fi *FileApi) Mkdir(dir string, mode fs.FileMode)

Mkdir 递归创建文件夹(dir 文件夹路径 mode 创建模式,例如: 0777)

func (*FileApi) WriteTxtAppend

func (fi *FileApi) WriteTxtAppend(text string, wrap bool)

WriteTxtAppend 追加方式写入文本(wrap: 是否在末尾追加换行符)

type ReadScreen

type ReadScreen struct {
	Text string // 字符串内容
	Err  error  // 错误信息
	// open     *os.File    // 文件结构
	// stat     os.FileInfo // 文件信息
	FileName string // 需要操作的文件名

}

func ReadFile added in v1.1.0

func ReadFile(filename string) *ReadScreen

func (*ReadScreen) Column added in v1.1.0

func (rs *ReadScreen) Column(col int, sep string) *ReadScreen

Column 读取指定列

func (*ReadScreen) ColumnRange added in v1.1.0

func (rs *ReadScreen) ColumnRange(start, end int, sep string) *ReadScreen

ColumnRange 读取指定范围列

func (*ReadScreen) GetText added in v1.1.1

func (rs *ReadScreen) GetText() *ReadScreen

GetText 以只读方式读取文件所有内容,如果内容较多切勿使用此方法

func (*ReadScreen) Line

func (rs *ReadScreen) Line(line int) *ReadScreen

Line 读取指定行

func (*ReadScreen) LineRange added in v1.1.0

func (rs *ReadScreen) LineRange(start, end int) *ReadScreen

LineRange 读取指定范围行

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL