1 Star 0 Fork 0

RemSynch/RemKit

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
file.go 3.25 KB
一键复制 编辑 原始数据 按行查看 历史
// Package remSys 提供系统和文件操作的工具函数。
// 跨平台支持,可在 Windows、Linux、macOS 上运行。
package remSys
import (
"os"
"path/filepath"
)
// ========== 文件/目录存在检查 ==========
// FileExists 判断文件是否存在且为普通文件。
func FileExists(path string) bool {
info, err := os.Stat(path)
if err != nil {
return false
}
return !info.IsDir()
}
// DirExists 判断目录是否存在且为目录。
func DirExists(path string) bool {
info, err := os.Stat(path)
if err != nil {
return false
}
return info.IsDir()
}
// Exists 判断文件或目录是否存在。
func Exists(path string) bool {
_, err := os.Stat(path)
return err == nil
}
// IsFile 判断路径是否为文件。
func IsFile(path string) bool {
return FileExists(path)
}
// IsDir 判断路径是否为目录。
func IsDir(path string) bool {
return DirExists(path)
}
// ========== 目录操作 ==========
// EnsureDir 确保目录存在,不存在则创建(包括所有父目录)。
//
// 示例:
//
// EnsureDir("/path/to/dir") // 创建 /path/to/dir 及其父目录
func EnsureDir(path string) error {
if DirExists(path) {
return nil
}
return os.MkdirAll(path, 0755)
}
// EnsureParentDir 确保文件的父目录存在。
//
// 示例:
//
// EnsureParentDir("/path/to/file.txt") // 确保 /path/to 存在
func EnsureParentDir(filePath string) error {
dir := filepath.Dir(filePath)
return EnsureDir(dir)
}
// ========== 文件信息 ==========
// GetFileSize 获取文件大小(字节)。
// 如果文件不存在或发生错误,返回 -1 和错误。
func GetFileSize(path string) (int64, error) {
info, err := os.Stat(path)
if err != nil {
return -1, err
}
if info.IsDir() {
return -1, os.ErrInvalid
}
return info.Size(), nil
}
// GetFileSizeOrZero 获取文件大小,出错时返回 0。
func GetFileSizeOrZero(path string) int64 {
size, err := GetFileSize(path)
if err != nil {
return 0
}
return size
}
// ========== 文件读写便捷函数 ==========
// ReadFile 读取文件内容为字符串。
func ReadFile(path string) (string, error) {
data, err := os.ReadFile(path)
if err != nil {
return "", err
}
return string(data), nil
}
// WriteFile 将字符串写入文件。
// 如果文件不存在会创建,存在则覆盖。
func WriteFile(path string, content string) error {
return os.WriteFile(path, []byte(content), 0644)
}
// AppendFile 向文件追加内容。
// 如果文件不存在会创建。
func AppendFile(path string, content string) error {
f, err := os.OpenFile(path, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
return err
}
defer f.Close()
_, err = f.WriteString(content)
return err
}
// ========== 路径操作 ==========
// AbsPath 获取绝对路径。
func AbsPath(path string) (string, error) {
return filepath.Abs(path)
}
// JoinPath 连接路径。
func JoinPath(elem ...string) string {
return filepath.Join(elem...)
}
// BaseName 获取路径的最后一个元素(文件名或目录名)。
func BaseName(path string) string {
return filepath.Base(path)
}
// DirName 获取路径的目录部分。
func DirName(path string) string {
return filepath.Dir(path)
}
// Ext 获取文件扩展名。
func Ext(path string) string {
return filepath.Ext(path)
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/ochumilov/rem-kit.git
git@gitee.com:ochumilov/rem-kit.git
ochumilov
rem-kit
RemKit
v0.0.6

搜索帮助