diff --git a/docs/fileutil.md b/docs/fileutil.md index ff31605..951cc8a 100644 --- a/docs/fileutil.md +++ b/docs/fileutil.md @@ -43,6 +43,8 @@ import ( - [MTime](#MTime) - [Sha](#Sha) - [ReadCsvFile](#ReadCsvFile) +- [WriteStringToFile](#WriteStringToFile) +- [WriteBytesToFile](#WriteBytesToFile)
@@ -661,3 +663,103 @@ func main() { // } ``` + + +### WriteBytesToFile + +

Writes bytes to target file.

+ +Signature: + +```go +func WriteBytesToFile(filepath string, content []byte) error +``` + +Example: + +```go +package main + +import ( + "fmt" + "github.com/duke-git/lancet/fileutil" +) + +func main() { + filepath := "./bytes.txt" + + file, err := os.Create(filepath) + if err != nil { + return + } + + defer file.Close() + + err = fileutil.WriteBytesToFile(filepath, []byte("hello")) + if err != nil { + return + } + + content, err := fileutil.ReadFileToString(filepath) + if err != nil { + return + } + + os.Remove(filepath) + + fmt.Println(content) + + // Output: + // hello +} +``` + + +### WriteStringToFile + +

Writes string to target file.

+ +Signature: + +```go +func WriteStringToFile(filepath string, content string, append bool) error +``` + +Example: + +```go +package main + +import ( + "fmt" + "github.com/duke-git/lancet/fileutil" +) + +func main() { + filepath := "./test.txt" + + file, err := os.Create(filepath) + if err != nil { + return + } + + defer file.Close() + + err = fileutil.WriteStringToFile(filepath, "hello", true) + if err != nil { + return + } + + content, err := fileutil.ReadFileToString(filepath) + if err != nil { + return + } + + os.Remove(filepath) + + fmt.Println(content) + + // Output: + // hello +} +``` \ No newline at end of file diff --git a/docs/fileutil_zh-CN.md b/docs/fileutil_zh-CN.md index 15f9138..ab8e673 100644 --- a/docs/fileutil_zh-CN.md +++ b/docs/fileutil_zh-CN.md @@ -43,6 +43,8 @@ import ( - [MTime](#MTime) - [Sha](#Sha) - [ReadCsvFile](#ReadCsvFile) +- [WriteStringToFile](#WriteStringToFile) +- [WriteBytesToFile](#WriteBytesToFile)
@@ -451,7 +453,7 @@ func main() {

zip解压缩文件并保存在目录中

-Signature: +函数签名: ```go func UnZip(zipFile string, destPath string) error @@ -661,3 +663,102 @@ func main() { // } ``` + +### WriteBytesToFile + +

将bytes写入文件。

+ +函数签名: + +```go +func WriteBytesToFile(filepath string, content []byte) error +``` + +示例: + +```go +package main + +import ( + "fmt" + "github.com/duke-git/lancet/fileutil" +) + +func main() { + filepath := "./bytes.txt" + + file, err := os.Create(filepath) + if err != nil { + return + } + + defer file.Close() + + err = fileutil.WriteBytesToFile(filepath, []byte("hello")) + if err != nil { + return + } + + content, err := fileutil.ReadFileToString(filepath) + if err != nil { + return + } + + os.Remove(filepath) + + fmt.Println(content) + + // Output: + // hello +} +``` + + +### WriteStringToFile + +

将字符串写入文件。

+ +函数签名: + +```go +func WriteStringToFile(filepath string, content string, append bool) error +``` + +示例: + +```go +package main + +import ( + "fmt" + "github.com/duke-git/lancet/fileutil" +) + +func main() { + filepath := "./test.txt" + + file, err := os.Create(filepath) + if err != nil { + return + } + + defer file.Close() + + err = fileutil.WriteStringToFile(filepath, "hello", true) + if err != nil { + return + } + + content, err := fileutil.ReadFileToString(filepath) + if err != nil { + return + } + + os.Remove(filepath) + + fmt.Println(content) + + // Output: + // hello +} +``` diff --git a/fileutil/file.go b/fileutil/file.go index 88918bc..4ab9c22 100644 --- a/fileutil/file.go +++ b/fileutil/file.go @@ -419,3 +419,33 @@ func ReadCsvFile(filepath string) ([][]string, error) { return records, nil } + +// WriteStringToFile write string to target file. +func WriteStringToFile(filepath string, content string, append bool) error { + flag := os.O_RDWR | os.O_CREATE + if append { + flag = flag | os.O_APPEND + } + + f, err := os.OpenFile(filepath, flag, 0644) + if err != nil { + return err + } + defer f.Close() + + _, err = f.WriteString(content) + return err +} + +// WriteBytesToFile write bytes to target file. +func WriteBytesToFile(filepath string, content []byte) error { + f, err := os.OpenFile(filepath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644) + if err != nil { + return err + } + + defer f.Close() + + _, err = f.Write(content) + return err +} diff --git a/fileutil/file_test.go b/fileutil/file_test.go index ac0a3cf..b186567 100644 --- a/fileutil/file_test.go +++ b/fileutil/file_test.go @@ -277,3 +277,68 @@ func TestReadCsvFile(t *testing.T) { assert.Equal(3, len(content[0])) assert.Equal("Bob", content[0][0]) } + +func TestWriteStringToFile(t *testing.T) { + assert := internal.NewAssert(t, "TestWriteStringToFile") + + filepath := "./test.txt" + + file, err := os.Create(filepath) + if err != nil { + t.Fail() + } + + defer file.Close() + + err = WriteStringToFile(filepath, "hello", false) + if err != nil { + t.Fail() + } + + content1, err := ReadFileToString(filepath) + if err != nil { + t.Fail() + } + + err = WriteStringToFile(filepath, " world", true) + if err != nil { + t.Fail() + } + + content2, err := os.ReadFile(filepath) + if err != nil { + t.Fail() + } + + assert.Equal("hello", content1) + assert.Equal("hello world", string(content2)) + + os.Remove(filepath) +} + +func TestWriteBytesToFile(t *testing.T) { + assert := internal.NewAssert(t, "TestWriteBytesToFile") + + filepath := "./bytes.txt" + + file, err := os.Create(filepath) + if err != nil { + t.Fail() + } + + defer file.Close() + + err = WriteBytesToFile(filepath, []byte("hello")) + if err != nil { + t.Fail() + } + + content, err := os.ReadFile(filepath) + if err != nil { + t.Fail() + } + + assert.Equal("hello", string(content)) + + os.Remove(filepath) +}