• go语言path包和filepath包的学习与使用


    path包的使用

    package main;
    
    import (
    	"fmt"
    	"path"
    )
    
    //go语言path包的学习
    
    func main() {
    	//返回路径的最后一个元素
    	fmt.Println(path.Base("./a/b/c"));
    	//如果路径为空字符串,返回.
    	fmt.Println(path.Base(""));
    	//如果路径只有斜线,返回/
    	fmt.Println(path.Base("///"));
    
    	//返回等价的最短路径
    	//1.用一个斜线替换多个斜线
    	//2.清除当前路径.
    	//3.清除内部的..和他前面的元素
    	//4.以/..开头的,变成/
    	fmt.Println(path.Clean("./a/b/../"));
    
    	//返回路径最后一个元素的目录
    	//路径为空则返回.
    	fmt.Println(path.Dir("./a/b/c"));
    
    	//返回路径中的扩展名
    	//如果没有点,返回空
    	fmt.Println(path.Ext("./a/b/c/d.jpg"));
    
    	//判断路径是不是绝对路径
    	fmt.Println(path.IsAbs("./a/b/c"));
    	fmt.Println(path.IsAbs("/a/b/c"));
    
    	//连接路径,返回已经clean过的路径
    	fmt.Println(path.Join("./a", "b/c", "../d/"));
    
    	//匹配文件名,完全匹配则返回true
    	fmt.Println(path.Match("*", "a"));
    	fmt.Println(path.Match("*", "a/b/c"));
    	fmt.Println(path.Match("\b", "b"));
    
    	//分割路径中的目录与文件
    	fmt.Println(path.Split("./a/b/c/d.jpg"));
    }

    filepath包的使用

    package main;
    
    import (
    	"path/filepath"
    	"fmt"
    	"os"
    )
    
    //学习filepath包,兼容各操作系统的文件路径
    
    func main() {
    	//返回所给路径的绝对路径
    	path, _ := filepath.Abs("./1.txt");
    	fmt.Println(path);
    
    	//返回路径最后一个元素
    	fmt.Println(filepath.Base("./1.txt"));
    	//如果路径为空字符串,返回.
    	fmt.Println(filepath.Base(""));
    	//如果路径只有斜线,返回/
    	fmt.Println(filepath.Base("///"));
    
    	//返回等价的最短路径
    	//1.用一个斜线替换多个斜线
    	//2.清除当前路径.
    	//3.清除内部的..和他前面的元素
    	//4.以/..开头的,变成/
    	fmt.Println(filepath.Clean("C:/a/b/../c"));
    	fmt.Println(filepath.Clean("./1.txt"));
    
    	//返回路径最后一个元素的目录
    	//路径为空则返回.
    	fmt.Println(filepath.Dir("./a/b/c"));
    	fmt.Println(filepath.Dir("C:/a/b/c"));
    
    	//返回链接文件的实际路径
    	path2, _ := filepath.EvalSymlinks("1.lnk");
    	fmt.Println(path2);
    
    	//返回路径中的扩展名
    	//如果没有点,返回空
    	fmt.Println(filepath.Ext("./a/b/c/d.jpg"));
    
    	//将路径中的/替换为路径分隔符
    	fmt.Println(filepath.FromSlash("./a/b/c"));
    
    	//返回所有匹配的文件
    	match, _ := filepath.Glob("./*.go");
    	fmt.Println(match);
    
    	//判断路径是不是绝对路径
    	fmt.Println(filepath.IsAbs("./a/b/c"));
    	fmt.Println(filepath.IsAbs("C:/a/b/c"));
    
    	//连接路径,返回已经clean过的路径
    	fmt.Println(filepath.Join("C:/a", "/b", "/c"));
    
    	//匹配文件名,完全匹配则返回true
    	fmt.Println(filepath.Match("*", "a"));
    	fmt.Println(filepath.Match("*", "C:/a/b/c"));
    	fmt.Println(filepath.Match("\b", "b"));
    
    	//返回以basepath为基准的相对路径
    	path3, _ := filepath.Rel("C:/a/b", "C:/a/b/c/d/../e");
    	fmt.Println(path3);
    
    	//将路径使用路径列表分隔符分开,见os.PathListSeparator
    	//linux下默认为:,windows下为;
    	fmt.Println(filepath.SplitList("C:/windows;C:/windows/system"));
    
    	//分割路径中的目录与文件
    	dir, file := filepath.Split("C:/a/b/c/d.jpg");
    	fmt.Println(dir, file);
    
    	//将路径分隔符使用/替换
    	fmt.Println(filepath.ToSlash("C:/a/b"));
    
    	//返回分区名
    	fmt.Println(filepath.VolumeName("C:/a/b/c"));
    
    	//遍历指定目录下所有文件
    	filepath.Walk("./", func(path string, info os.FileInfo, err error) error {
    		fmt.Println(path);
    		return nil;
    	});
    }
    
  • 相关阅读:
    Shared Memory in Windows NT
    Layered Memory Management in Win32
    软件项目管理的75条建议
    Load pdbs when you need it
    Stray pointer 野指针
    About the Rebase and Bind operation in the production of software
    About "Serious Error: No RTTI Data"
    Realizing 4 GB of Address Space[MSDN]
    [bbk4397] 第1集 第一章 AMS介绍
    [bbk3204] 第67集 Chapter 17Monitoring and Detecting Lock Contention(00)
  • 原文地址:https://www.cnblogs.com/jkko123/p/6923962.html
Copyright © 2020-2023  润新知