代码拉取完成,页面将自动刷新
// 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)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。