Skip to content

Commit e3510c0

Browse files
committed
路径操作
1 parent 8efc541 commit e3510c0

File tree

2 files changed

+73
-1
lines changed

2 files changed

+73
-1
lines changed

ecore/文件操作.go

+56-1
Original file line numberDiff line numberDiff line change
@@ -402,4 +402,59 @@ func E取文件Mime(文件路径 string) string {
402402
return ""
403403
}
404404
return http.DetectContentType(buffer)
405-
}
405+
}
406+
407+
// E路径取目录 返回"路径"中除最后一个元素以外的所有元素(通常是路径的目录)
408+
// 如果路径为空, 本方法会返回".".
409+
// 如果路径完全由斜线后跟非斜线字符组成,本方法会返回"/".
410+
// 在其他任何情况下, 返回的路径都不会以"/"结尾.
411+
func E路径取目录(路径 string) string {
412+
return path.Dir(路径)
413+
}
414+
415+
// E路径取基本部分 返回一个路径的最后一个元素, 不包含结尾的"/"字符
416+
// 如果"路径"是""返回".", 如果"路径"是"/"返回"/".
417+
func E路径取基本部分(路径 string) string {
418+
return path.Base(路径)
419+
}
420+
421+
// E路径连接 将任意数量的路径元素连接成一个路径, 并用斜线分隔
422+
// 空元素将被忽略, 结果是"清理()"过的.
423+
// 如果参数列表为空或所有元素都为空, 本方法返回空字符串.
424+
func E路径连接(元素 ...string) string {
425+
return path.Join(元素...)
426+
}
427+
428+
// E路径清理 返回与"路径"相当的最短路径名
429+
// 它会反复应用以下规则,直到无法进一步处理为止:
430+
// 1. 用一个斜线("/")替换多条斜线.
431+
// 2. 删除每个 "." 路径名元素(当前目录).
432+
// 3. 删除每个内部 ".." 元素(父目录)以及它前面的一个非 ".." 元素.
433+
// 4. 删除根路径开头的".."元素: 即在路径开头用"/"替换"/...".
434+
//
435+
// 返回的路径只有在它本身是"/" (根) 时才以斜线结束.
436+
// 如果处理结果为空字符串, 将返回".".
437+
func E路径清理(路径 string) string {
438+
return path.Clean(路径)
439+
}
440+
441+
// E路径取扩展名 返回"路径"使用的文件扩展名.
442+
// 扩展名是"路径"中最后一个元素中最后一个点开头的后缀.
443+
// 如果最后一个元素没有点, 则为空字符串.
444+
func E路径取扩展名(路径 string) string {
445+
return path.Ext(路径)
446+
}
447+
448+
// E路径是否为绝对路径 返回路径是否为绝对路径.
449+
func E路径是否为绝对路径(路径 string) bool {
450+
return path.IsAbs(路径)
451+
}
452+
453+
// E路径是否匹配 返回"名称"是否与"模式"匹配
454+
// 支持的模式语法:
455+
// '*' 匹配任何非"/"字符序列
456+
// '?' 匹配任何单个非"/"字符
457+
// '[abc]' 匹配字符'a'、'b'或'c'等.
458+
func E路径是否匹配(模式, 名称 string) (bool, error) {
459+
return path.Match(模式, 名称)
460+
}

ecore/文件操作_test.go

+17
Original file line numberDiff line numberDiff line change
@@ -301,3 +301,20 @@ func TestE文件保存(t *testing.T) {
301301
E文件保存(E取运行目录()+"/aaa/ccc/ddd/2.txt", "1234")
302302

303303
}
304+
305+
func TestE路径(t *testing.T) {
306+
// 测试代码示例
307+
fmt.Println("路径取目录:", E路径取目录("/a/b/c"))
308+
fmt.Println("路径取基本部分:", E路径取基本部分("/a/b/c"))
309+
fmt.Println("路径连接:", E路径连接("a", "b", "c"))
310+
fmt.Println("路径清理:", E路径清理("/a//b/../c"))
311+
fmt.Println("路径取扩展名:", E路径取扩展名("file.txt"))
312+
fmt.Println("路径是否为绝对路径:", E路径是否为绝对路径("/a/b/c"))
313+
314+
匹配结果, 错误 := E路径是否匹配("*.txt", "file.txt")
315+
if 错误 != nil {
316+
fmt.Println("匹配错误:", 错误)
317+
} else {
318+
fmt.Println("匹配结果:", 匹配结果)
319+
}
320+
}

0 commit comments

Comments
 (0)