精华内容
下载资源
问答
  • Golang-filepath使用

    2018-12-19 22:09:07
    Golang-filepath 使用 获取当前目录 os.GetPWD() filepath.Abs(path) # 绝对目录 filepath.Dir(path) # 相对目录 可以 filepath.Abs(filepath.Dir(path)) 获取字符目录,前缀,后缀等方法 filepath.Split(path) filepa...
        

    Golang-filepath 使用

    获取当前目录

    os.GetPWD()
    filepath.Abs(path) # 绝对目录
    filepath.Dir(path) # 相对目录
    可以 filepath.Abs(filepath.Dir(path))

    获取字符目录,前缀,后缀等方法

    filepath.Split(path)
    filepath.Base(path) # test.txt
    filepath.Ext(path) # .txt
    展开全文
  • Golang中path/filepath

    千次阅读 2019-06-28 16:41:25
    path/filepath包下的相关函数 1. ToSlash函数 func ToSlash(path string) string 功能:将path中平台相关的路径分隔符转换成'/' 例如:windows当前路径: D:\gopro\src\study,转换之后D:/gopro/src/study 2. ...

    path/filepath包下的相关函数

    1. ToSlash函数

    func ToSlash(path string) string

    功能:将path中平台相关的路径分隔符转换成'/'

    例如:windows当前路径: D:\gopro\src\study,转换之后D:/gopro/src/study

     

    2. FromSlash函数

    func FromSlash(path string) string

    功能:将 path 中的 '/' 转换为系统相关的路径分隔符

     

     

    3.Dir函数

    func Dir(path string) string

    功能:获取path中最后一个分隔符之前的部分(不包含分隔符)

     

    4.Base函数

    func Base(path string) string

    功能:获取path中最后一个分隔符之后的部分(不包含分隔符)

     

    5.Split函数

    func Split(path string) (dir, file string)

    功能:获取path中最后一个分隔符前后的两部分,

    dir是分隔符前面的部分包含分隔符,file是分隔符后面的部分不包含分隔符

     

    6. Ext函数

    func Ext(path string) string

    功能:获取路径字符串中的文件扩展名

    例如:

           fmt.Println(“D:/gopro/src/aaa.txt”)

       //如果该文件存在则会输出: .txt

     

     

    7.Rel函数

    func Rel(basepath, targpath string) (string, error)

    功能:获取targpath相对于basepath的路径

             要求targpaht和basepath必须"都是相对路径"或都是"绝对路径"

     

    例如:

    package main
    
    import (
           "fmt"
           "path/filepath"
    )
    
    
    
    func main() {
    
           // 都是绝对路径
           s, err := filepath.Rel(`/a/b/c`, `/a/b/c/d/e`)
           fmt.Println(s, err) // d/e <nil>
    
    
           // 都是相对路径
           s, err = filepath.Rel(`a/b/c`, `a/b/c/d/e`)
           fmt.Println(s, err) // d/e <nil>
    
    
           // 一个绝对一个相对
           s, err = filepath.Rel(`/a/b/c`, `a/b/c/d/e`)
           fmt.Println(s, err)
           //  Rel: can't make a/b/c/d/e relative to /a/b/c
    
    
           // 一个相对一个绝对
           s, err = filepath.Rel(`a/b/c`, `/a/b/c/d/e`)
           fmt.Println(s, err)
           //  Rel: can't make /a/b/c/d/e relative to a/b/c
    
    
           // 从 `a/b/c` 进入 `a/b/d/e`,只需要进入 `../d/e` 即可
           s, err = filepath.Rel(`a/b/c`, `a/b/d/e`)
           fmt.Println(s, err) // ../d/e <nil>
    
    }

     

     

    8.Join函数

    func Join(elem ...string) string

    功能:将elem中的多个元素合并成一个路径,忽略空元素,清理多余字符

     

    9.Clean函数

    func Clean(path string) string

    功能:清除path中多余的字符

           规则如下:

           1.如果有多个分隔符,则只留一个

           2.消除每一个.(当前路径)路径名

           3.消除每一个..(父目录)路径名,以及它之前的非..元素

     

           2和3使用于linux系统

     

    10. IsAbs函数

    func IsAbs(path string) (b bool)

    功能:判断该路径是否是绝对路径

     

    11. Abs函数

    func Abs(path string) (string, error)

    功能:获取path的绝对路径

    示例:

    fmt.Println(filepath.Abs("b/c"))  //返回结果:D:\gopro\src\study\b\c <nil>

     

    12. SplitList函数

    func SplitList(path string) []string

    功能:按os.PathListSeparator即(;)将路径进行分割

     

    13. VolumeName函数

    func VolumeName(path string) string

    功能:返回路径字符串中的卷名

           如Windows 中的 `C:\Windows` 会返回 "C:"

     

    14. EvalSymlinks函数

    func EvalSymlinks(path string) (string, error)

    功能:返回链接(快捷方式)所指向的实际文件

     

    15.Match函数

    func Match(pattern, name string) (matched bool, err error)

    功能:根据pattern来判断name是否匹配,如果匹配则返回true

           pattern 规则如下:

           可以使用 ? 匹配单个任意字符(不匹配路径分隔符)。

           可以使用 * 匹配 0 个或多个任意字符(不匹配路径分隔符)。

           可以使用 [] 匹配范围内的任意一个字符(可以包含路径分隔符)。

           可以使用 [^] 匹配范围外的任意一个字符(无需包含路径分隔符)。

           [] 之内可以使用 - 表示一个区间,比如 [a-z] 表示 a-z 之间的任意一个字符。

           反斜线用来匹配实际的字符,比如 \* 匹配 *,\[ 匹配 [,\a 匹配 a 等等。

           [] 之内可以直接使用 [ * ?,但不能直接使用 ] -,需要用 \]、\- 进行转义。

     

     

    16.Glob函数

    func Glob(pattern string) (matches []string, err error)

    功能:列出与指定的模式 pattern 完全匹配的文件或目录(匹配原则同上)

     

    示例:

    package main
    
    
    import (
        "os"
        "fmt"
        "path/filepath"
    )
    
    
    
    func main() {
         pwd,_ := os.Getwd()
         fmt.Println(filepath.Glob(pwd+"/???"))
    }

    以上示例是列出当前文件夹下 名字为3个字符的文件或目录

     

    17.Walk函数

    func Walk(root string, walkFn WalkFunc) error

    功能:遍历指定目录(包括子目录),对遍历的项目用walkFn函数进行处理

     

    walkFn函数如下:

    type WalkFunc func(path string, info os.FileInfo, err error) error

    path为当前文件或目录的路径,info为文件描述信息

    规则如下:

           文件处理函数定义如下,如果 WalkFunc 返回 nil,则 Walk 函数继续遍历,如果返回 SkipDir,则 Walk 函数会跳过当前目录(如果当前遍历到的是文件,则同时跳过后续文件及子目录),继续遍历下一个目录。如果返回其它错误,则 Walk 函数会中止遍历。在 Walk 遍历过程中,如果遇到错误,则会将错误通过 err 传递给WalkFunc 函数,同时 Walk 会跳过出错的项目,继续处理后续项目。

     

    示例:

    package main
    
    
    import (
           "os"
           "fmt"
           "path/filepath"
    
    )
    
    
    
    func main() {
           pwd,_ := os.Getwd()
           filepath.Walk(pwd,func(fpath string, info os.FileInfo, err error) error {
                  if match,err := filepath.Match("???",filepath.Base(fpath)); match {
                         fmt.Println("path:",fpath)
                         fmt.Println("info:",info)
                         return err
                  }
                  return nil
           })
    }
    
    

    以上示例是遍历当前文件夹下名字为3个字符的文件或目录及info信息,及满足条件目录下的子文件或子目录。

     

    path目录下的相关函数

    1. Join函数

    func Join(elem ...string) string

    功能:将多个path进行连接

     

    2. Match函数

    func Match(pattern, name string) (matched bool, err error)

    功能:根据pattern进行匹配

     

    3. IsAbs函数

    func IsAbs(path string) bool

    功能:是否是绝对路径,判断是否是以'/'结尾,不适用windows

     

    4.Clean函数

    func Clean(path string) string

    功能:清除path中多余的字符

     

     

    5.Ext函数

    func Ext(path string) string

    功能:获取文件后缀名

     

    6.Split函数

    func Split(path string) (dir, file string)

    功能:获取path中最后一个分隔符前后的两部分,分隔符前面的部分包含分隔符,后面的不包含分割符

     

    7. Base函数

    func Base(path string) string

    功能:获取path中最后一个分隔符之后的部分(不包含分隔符)

     

    8.Dir函数

    func Dir(path string) string

    功能:获取path的目录,最后一个分隔符前面的内容

    展开全文
  • path/filepath 基本使用

    千次阅读 2020-09-03 11:02:44
    标准库path/filepath中提供了对各个操作系统文件路径的操作函数,一般情况下不要使用path,因为package path 只兼容以/为路径分隔符的系统 方法使用 func IsAbs(path string) bool 该函数以路径为参数,如果该路径为...

    标准库path/filepath中提供了对各个操作系统文件路径的操作函数,一般情况下不要使用path,因为package path 只兼容以/为路径分隔符的系统

    方法使用

    func IsAbs(path string) bool

    该函数以路径为参数,如果该路径为绝对路径,那么返回true,如果不是返回false

    func Abs(path string) (string, error)

    // Abs returns an absolute representation of path.
    // If the path is not absolute it will be joined with the current
    // working directory to turn it into an absolute path. The absolute
    // path name for a given file is not guaranteed to be unique.
    // Abs calls Clean on the result.
    func Abs(path string) (string, error) {
    	return abs(path)
    }
    
    func unixAbs(path string) (string, error) {
    	if IsAbs(path) {
    		return Clean(path), nil
    	}
    	wd, err := os.Getwd()
    	if err != nil {
    		return "", err
    	}
    	return Join(wd, path), nil
    }
    

    分析源码,我们知道如果输入路径时绝对路径,则对路径进行clean(见Clean函数)之后,返回,如果是相对路径,则会加上当前目录使之成为绝对路径,然后返回

    func Rel(basepath, targpath string) (string, error)

    该函数以basepath为基准,返回targpath相对于basepath的相对路径,也就是说如果basepath为/a,targpath为/a/b/c,那么则会返回/b/c,如果两个参数有一个为绝对路径,一个为相对路径,则会返回错误

    func SplitList(path string) []string

    该函数会将path中存在的多个环境变量路径进行分割(这些路径由os.PathListSeparator连接),比如说/home/linux:/usr/bin会分割为[]string{"home/linux", "/usr/bin"}, unix下默认分隔符为:,windows下为;

    func Split(path string) (dir, file string)

    Split 函数会以路径中的最后一个os.PathSeparator为节点进行分割,如果没有,dir设置为空字符串,file直接设为path

    func Join(elem ...string) string

    Join 函数将多个路径进行连接,并且进行Clean操作,然后返回

    func FromSlash(path string) string

    FromSlash函数将path中的斜杠(’/’)替换为路径分隔符并返回替换结果,多个斜杠会替换为多个路径分隔符。

    func ToSlash(path string) string

    ToSlash函数将path中的路径分隔符替换为斜杠(’/’)并返回替换结果,多个路径分隔符会替换为多个斜杠。

    func VolumeName(path string) (v string)

    VolumeName函数返回最前面的卷名。如Windows系统里提供参数"C:\foo\bar"会返回"C:";提供"\host\share\foo"会返回"\host\share";其他平台(包括unix/linux)会返回""。

    path.go

    // VolumeName returns leading volume name.
    // Given "C:\foo\bar" it returns "C:" on Windows.
    // Given "\\host\share\foo" it returns "\\host\share".
    // On other platforms it returns "".
    func VolumeName(path string) string {
    	return path[:volumeNameLen(path)]
    }
    

    path_unix.go

    // volumeNameLen returns length of the leading volume name on Windows.
    // It returns 0 elsewhere.
    func volumeNameLen(path string) int {
    	return 0
    }
    

    func Dir(path string) string

    Dir函数返回路径所在的目录

    func Base(path string) string

    Base函数会返回路径的最后一个元素,也就是该路径指明的目录名或者文件名

    func Ext(path string) string

    Ext函数返回路径的扩展名,如果没有返回空字符串

    func Clean(path string) string

    Clean函数会返回与该路径相同的最短路径,在处理中会将比如a/../b替换成b,会将.去掉等等

    func EvalSymlinks(path string) (string, error)

    EvalSymlinks函数会返回path软连接指向的路径

    func Match(pattern, name string) (matched bool, err error)

    Match要求匹配整个name字符串,而不是它的一部分。只有pattern语法错误时,会返回ErrBadPattern。

    Windows系统中,不能进行转义:’\'被视为路径分隔符。
    pattern 语法如下:

    pattern:
    	{ term }
    term:
    	'*'                                  匹配0或多个非路径分隔符的字符
    	'?'                                  匹配1个非路径分隔符的字符
    	'[' [ '^' ] { character-range } ']'  字符组(必须非空)
    	c                                    匹配字符c(c != '*', '?', '\\', '[')
    	'\\' c                               匹配字符c
    character-range:
    	c           匹配字符c(c != '\\', '-', ']')
    	'\\' c      匹配字符c
    	lo '-' hi   匹配区间[lo, hi]内的字符
    

    func Glob(pattern string) (matches []string, err error)

    Glob函数返回所有匹配模式匹配字符串pattern的文件或者nil(如果没有匹配的文件)

    func Walk(root string, walkFn WalkFunc) error

    Walk函数会遍历root指定的目录下的文件树,对每一个该文件树中的目录和文件都会调用walkFn,包括root自身。所有访问文件/目录时遇到的错误都会传递给walkFn过滤,Walk函数不会遍历文件树中的符号链接(快捷方式)文件包含的路径

    其中 WalkFunc类型为 func(path string, info os.FileInfo, err error) error


    示例代码见GitHub,欢迎⭐️

    展开全文
  • golang的filepath包函数示例

    千次阅读 2016-10-10 22:05:46
    func Abs(path string) (string, error)package main import ( "path/filepath" "os" "fmt" )func main() { // pName := os.Args[0] absName, err := filepath.Abs(pName) if err != nil

    func Abs(path string) (string, error)

    package main
    import (
        "path/filepath"
        "os"
        "fmt"
    )
    
    func main() {
        //
        pName := os.Args[0]
        absName, err := filepath.Abs(pName)
        if err != nil{
            fmt.Println(err)
        }
    
        fmt.Println(absName)
    }

    func Base(path string) string

    package main
    import (
        "path/filepath"
        "fmt"
    )
    
    func main() {
        baseName := filepath.Base("/a/b/c/e.txt")
        fmt.Println(baseName)
    }

    func Clean(path string) string

    package main
    import (
        "path/filepath"
        "fmt"
    )
    
    func main() {
        p := "../..//././//a/b/c.txt"
        pc := filepath.Clean(p)
        fmt.Println(pc)
    }

    func Dir(path string) string

    package main
    import (
        "path/filepath"
        "fmt"
    )
    
    func main() {
        d := filepath.Dir("/a/b/c/d.txt")
        fmt.Println(d)
    }

    func EvalSymlinks(path string) (string, error)

    package main
    import (
        "path/filepath"
        "fmt"
    )
    
    func main() {
        e, _:= filepath.EvalSymlinks("/Users/hyhu/SourcePrj/mysourceprj")
        fmt.Println(e)
    }

    func Ext(path string) string

    package main
    import (
        "path/filepath"
        "fmt"
    )
    
    func main() {
        e := filepath.Ext("/Users/1.txt")
        fmt.Println(e)
    }

    func FromSlash(path string) string

    package main
    import (
        "path/filepath"
        "fmt"
    )
    
    func main() {
        //windows下有效果
        r := filepath.FromSlash("/a//b/c/d.txt")
        fmt.Println(r)
    }

    func Glob(pattern string) (matches []string, err error)

    package main
    import (
        "path/filepath"
        "fmt"
    )
    
    func main() {
        m,_ := filepath.Glob("/usr/*")
        fmt.Println(m)
    }

    func HasPrefix(p, prefix string) bool

    Go1.7中已经废弃使用

    func IsAbs(path string) bool

    package main
    import (
        "path/filepath"
        "fmt"
    )
    
    func main() {
        b := filepath.IsAbs("/a/b/c/d.txt")
        fmt.Println(b)
        b = filepath.IsAbs("d.txt")
        fmt.Println(b)
    }

    func Join(elem …string) string

    package main
    
    import (
        "fmt"
        "path/filepath"
    )
    
    func main() {
        fmt.Println("On Unix:")
        fmt.Println(filepath.Join("a", "b", "c"))
        fmt.Println(filepath.Join("a", "b/c"))
        fmt.Println(filepath.Join("a/b", "c"))
        fmt.Println(filepath.Join("a/b", "/c"))
    }
    

    func Match(pattern, name string) (matched bool, err error)

    package main
    import (
        "path/filepath"
        "fmt"
    )
    
    func main() {
        //windows下有效果
        m,_ := filepath. Match("/usr/*", "/usr/local")
        fmt.Println(m)
    }

    func Rel(basepath, targpath string) (string, error)

    package main
    
    import (
        "fmt"
        "path/filepath"
    )
    
    func main() {
        paths := []string{
            "/a/b/c",
            "/b/c",
            "./b/c",
        }
        base := "/a"
    
        fmt.Println("On Unix:")
        for _, p := range paths {
            rel, err := filepath.Rel(base, p)
            fmt.Printf("%q: %q %v\n", p, rel, err)
        }
    
    }

    func Split(path string) (dir, file string)

    package main
    
    import (
        "fmt"
        "path/filepath"
    )
    
    func main() {
        paths := []string{
            "/home/arnie/amelia.jpg",
            "/mnt/photos/",
            "rabbit.jpg",
            "/usr/local//go",
        }
        fmt.Println("On Unix:")
        for _, p := range paths {
            dir, file := filepath.Split(p)
            fmt.Printf("input: %q\n\tdir: %q\n\tfile: %q\n", p, dir, file)
        }
    }

    func SplitList(path string) []string

    package main
    
    import (
        "fmt"
        "path/filepath"
    )
    
    func main() {
        fmt.Println("On Unix:", filepath.SplitList("/a/b/c:/usr/bin"))
    }

    func ToSlash(path string) string

    package main
    import (
        "path/filepath"
        "fmt"
    )
    
    func main() {
        //windows下有效果
        r := filepath.ToSlash("\\a\\b\\c/d.txt")
        fmt.Println(r)
    }

    func VolumeName(path string) string

    windows平台下
    C:\foo\bar 对应的结果 C:

    \\host\share\foo 对应的结果 \\host\share

    package main
    import (
        "path/filepath"
        "fmt"
    )
    
    func main() {
        v := filepath.VolumeName("C:\foo\bar")
        fmt.Println(v)
        v = filepath.VolumeName(`\\host\share\foo"`)
        fmt.Println(v)
    }

    func Walk(root string, walkFn WalkFunc) error

    同下

    type WalkFunc

    package main
    import (
        "path/filepath"
        "fmt"
        "os"
    )
    
    func MyWalkFunc (path string, info os.FileInfo, err error) error{
        var e error
    
        fmt.Println(path, info.Name(), info.Size(), info.Mode(), info.ModTime())
    
        return e
    }
    
    func main() {
        filepath.Walk("/", MyWalkFunc)
    }
    展开全文
  • Android Content Uri to FilePath

    千次阅读 2017-03-09 10:45:27
    public void uriToFilePath(Context context,Uri uri){ String filePath; if (uri != null && "file".equals(uri.getScheme())) { filePath = uri.getPath(); } else {
  • 生命不止,继续 go go go !!!文件以及文件夹的路径在编程中经常遇到,在C++工程中,我们往往自己写一个文件,里面塞满了关于路径的操作。...Package filepath implements utility routines for manipulating fil
  • 参考链接: path/filepath
  • Golang - path/filepath

    千次阅读 2017-10-08 01:25:05
    -------------------------... filepath 中的函数会根据不同平台做不同的处理,比如路径分隔符、卷名等。 ------------------------------------------------------------ 路径分隔符转换: const (  Separa
  • 问题: 在循环训练不同模型时会出现以下类似错误 Traceback (most recent call last): File "/home/ac/anaconda3/envs/tf-gpu/lib/python3.7/site-... return self.filepath.format(epoch=epoch + 1, **logs) Key...
  • filepath:处理文件路径的一把好手

    千次阅读 2019-09-22 19:33:08
    1.ToSlash(path string) string 将相关平台的路径分隔符转为/ package main ... "path/filepath" ) func main() { sep := os.PathSeparator // 查看当前平台的系统路径分隔符,windows平台是\ fmt....
  • Go : 使用避坑指南 filepath 包(Walk)

    千次阅读 2020-07-06 11:56:09
    1. Walk 在windows平台 walk 的path返回路径为"\" 在linux平台 walk的path返回的路径是"/" 在linux平台walk识别不了... filepath.Walk(fp, func(path string, info os.FileInfo, err error) error { fmt.Pr...
  • 在写javaweb访问ftp服务器并下载文件的demo中,列出目录列表,使用FTPClient 中 FTPClient.changeWorkingDirectory(filePath) 更改当前所在目录,但是代码一直返回 false,原因是自己的filePath写的不对。...
  • FTPClient.changeWorkingDirectory(filePath)总是返回false, 同时创建目录也失败,最后无法到达指定目录结果文件上传也失败。 问题原因: 1.目录不存在,需要创建。创建目录只能逐级创建(eq:指定上传目录为/a/b/c...
  • filepath包能够自动的根据不同的操作系统文件路径进行转换,所以如果你有跨平台的需求,你需要使用filepath。 与path包相同的函数 filepath包中的函数和path包很类似,其中对应函数的功能相同,只是一个可以跨...
  • BitmapFactory.decodeFile(filePath, options) return null; Android 6.0 动态权限
  • path/filepath包 path包 package main import ( "fmt" "path" ) func main() { //返回路径的最后一个元素 fmt.Println(path.Base("./a/b/c")) // c //如果路径为空字符串,返回. fmt.Println(path.Base(...
  • function num_lines = specobjid2deg(specobjid_filepath, deg_filepath, len_format) %Author: shizhixin %Email: szhixin@gmail.com %Date: Dec 11,2011 %This function can change specobjid which is the form
  • No parser and no filepath given, using ‘babylon’ the parser now but this will throw an error in the future. Please specify a parser or a filepath so o ne can be inferred. 解决办法: np...
  • yarn serve运行vue项目时警告:No parser and no filepath given, using 'babylon' the parser now but this will throw an error in the future. Please specify a parser or a filepath so one can be inferred. ...
  • No parser and no filepath given, using 'babylon' the parser now but this will throw an error in the future. Please specify a parser or a filepath so one can be inferred. 可能原因是vue-l...
  • public static File createNewFile(String filePath) {  if (filePath == null)  return null;  File newFile = new File(filePath);  try {  if (!newFile.exists()) {  int slash = filePath.last
  • 【问题】 使用keras.model中Model.save()时: ...TypeError: save() missing 1 required positional argument: 'filepath' 【解决】 改为: Model.save(model, r'D:\model.h5') Model.save()函数至少需要①模...
  • File file=new File(filePath)报空指针

    千次阅读 2016-01-06 14:00:46
    刚开始代码是这么写的:String filePath = request.getSession(true).getServletContext().getRealPath("prCodeImages"); File prCodeFile = new File(filePath); if(!prCodeFile .exists() && !prCodeFile
  • FilePath = "E:\\项目资料\\Test.bmp"这个是绝对路径。 相对路径的方法 (一) FilePath = "Test.bmp"; 文件直接放在当前文件夹下,这个相信都知道 (二)  FilePath = ".\\res\\Lena.png"; 文件路径改为...
  • [ERROR] Can’t start server: can’t create PID filepath: No such file or directory 错误原因 一般是由于服务器强制关机导致pid文件丢失。 解决办法 在/etc/my.cnf 中查看pid-file的位置 pid-file=/var/run/...
  • nodejs搭建的vue项目,编译...No parser and no filepath given, using 'babel' the parser now but this will throw an error in t he future. Please specify a parser or a filepath so one can be inferred. 可...
  • 项目中有一个功能,对数据库的备份与还原,在还原的工程中用户可以自己选择文件,文件中可能存在中文,那么我们以ajax的方式提交到后台就会...filePath="E:\中文.sql"; Ext.Ajax.request({  url:"group.do?meth
  • ``` String filePath ="a\\a\\b\\1";...int i =filePath.indexOf(File.separator,filePath.indexOf(File.separator)+1); System.out.println(i); System.out.println(filePath.substring(i)); ```
  • SSH单向一对多 获取多的一方 filepath字段不为空的行数 应该怎么写?数据库是oracle 一的一方是 药品表(drp_yp)。 有多种药品 多的一方是图片(drp_tp)表,引用外键药品ID,不同的药品都有数量不限的图片 但是图片...
  • 关于"path/filepath"和"archive/zip"使用

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 222,268
精华内容 88,907
关键字:

filepath