一尘不染

filepath.Join删除点

go

我对rsync的创建路径有问题。

x := filepath.Join("home", "my_name", "need_folder", ".")
fmt.Println(x)

我得到了"home/my_name/need_folder",但是需要"home/my_name/need_folder/.",没有concat怎么解决?在名称为“。”的linux文件夹中。不是不可能。

谢谢!


阅读 303

收藏
2020-07-02

共1个答案

一尘不染

您不能使用,filepath.Join()因为其文档指出:

加入通话清理结果…

并且由于.表示“当前”目录,因此它将被删除filepath.Clean()

它反复应用以下规则,直到无法进行进一步处理为止:

  1. […]

  2. 消除每个。路径名元素(当前目录)。

实际上,您根本无法使用该path/filepath程序包执行任何操作,因此不支持此操作。

您需要手动使用字符串连接。使用filepath.Separator它,将是安全的:

x := filepath.Join("home", "my_name", "need_folder") +
    string(filepath.Separator) + "."
fmt.Println(x)

输出(在Go Playground上尝试):

home/my_name/need_folder/.
2020-07-02