package utils import ( "io" "os" ) // AppendSourceToFile 将源文件的内容添加到目标文件,使用golang标准库完成,跨平台、安全性更强 func AppendSourceToFile(sourceFile, targetFile string) bool { // 打开源文件 source, err := os.Open(sourceFile) if err != nil { log.ErrorF("[BasicAppendSourceToFile] - error open source file => %s, error is %s", sourceFile, err.Error()) return false } defer source.Close() // 打开目标文件,如果不存在则创建,如果存在则在末尾追加 target, err := os.OpenFile(targetFile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil { log.ErrorF("[BasicAppendSourceToFile] - error open target file => %s, error is %s", sourceFile, err.Error()) return false } defer target.Close() // 将源文件内容复制到目标文件 _, err = io.Copy(target, source) if err != nil { log.ErrorF("[BasicAppendSourceToFile] - Error appending to target file: %s", err.Error()) return false } return true } // AppendContentToFile 向目标文件中追加写入一些内容 func AppendContentToFile(content string, targetFile string) bool { // 打开文件用于追加。如果文件不存在,将会创建一个新文件。 file, err := os.OpenFile(targetFile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil { log.ErrorF("[BasicAppendContentToFile] - Error opening file: %s , error is %s", targetFile, err.Error()) return false } defer file.Close() // 确保文件最终被关闭 // 写入内容到文件 if _, err := file.WriteString(content); err != nil { log.ErrorF("[BasicAppendContentToFile] - Error writing to file: %s , error is %s", targetFile, err.Error()) return false } return true } // AppendNullToFile 清空一个文件 func AppendNullToFile(targetFile string) bool { // 使用os.O_TRUNC清空文件内容 file, err := os.OpenFile(targetFile, os.O_TRUNC|os.O_WRONLY, 0644) if err != nil { log.ErrorF("[AppendNullToFile] - Error opening file: %s, error is %s", targetFile, err.Error()) return false } defer file.Close() // 确保在函数退出前关闭文件 return true } func WordSpaceCompletion(source string, totalLength int) string { sourceLength := len(source) if sourceLength >= totalLength { return source } for i := 0; i < totalLength-sourceLength; i++ { source += " " } return source } // FileExists 文件存在返回true,不存在返回false,如果文件是一个目录,也返回false func FileExists(fileFullPath string) bool { _, err := os.Stat(fileFullPath) return err == nil }