路径 | Path

该模块为操作或检索文件系统路径提供了方便。

本模块中的函数可以作为参数%28i.e接收一个字符数据。一个字符串或一个字符/字符串%29的列表,并且总是返回以UTF-8%29编码的字符串%28。

本模块中的大多数函数不与文件系统交互,只有少数函数要求它与%28类似。wildcard/2expand/129%。

类型

T%28%29

功能

缺席%28路径%29

将给定路径转换为绝对路径。不像expand/1,没有尝试解决..,,,.~

缺席%28路径,相对[医]调至%29

构建路径relative_topath

基准名%28路%29

如果路径本身不包含任何目录分隔符,则返回路径的最后一个组件或路径本身。

基名%28 path,扩展%29

返回path带着extension剥光

脏名%28路%29

的目录组件。path

将路径转换为绝对路径并展开任意路径。...人物与主角~

展开%28路径,相对[医]调至%29

展开路径相对于作为第二个参数展开任意的路径的路径。...

ext name%28 path%29

的最后一个组件的扩展。path

加入%28列表%29

加入路径列表

加入%28左,右%29

连接两条路径

相对%28名称%29

强制路径为相对路径。

相对[医]到%28路径,从%29

返回给定的path相对于给定的from路径

相对[医]到[医]CWD%28路%29

获取相对于当前工作目录的路径的方便性

根名%28路%29

返回path带着extension剥光

根名%28 path,扩展名%29

返回path带着extension剥光

分割%28路径%29

将路径拆分为路径分隔符处的列表。

类型%28 name%29

返回路径类型。

通配符%28 GLOB,选项[医][]%29

根据给定的路径遍历路径。glob表达式并返回匹配列表。

T%28%29

t() :: :unicode.chardata

缺席%28路径%29

absname(t) :: binary

将给定路径转换为绝对路径。不像expand/1,没有尝试解决..,,,.~...

实例

Unix

Path.absname("foo")
#=> "/usr/local/foo"

Path.absname("../x")
#=> "/usr/local/../x"

Path.absname("foo").
#=> "D:/usr/local/foo"
Path.absname("../x").
#=> "D:/usr/local/../x"

缺席%28路径,相对[医]调至%29

absname(t, t) :: binary

构建路径relative_topath...

如果path已经是一条绝对的道路,relative_to被忽视了。另见relative_to/2...

不像expand/2,没有尝试解决..,,,.~...

实例

iex> Path.absname("foo", "bar")
"bar/foo"

iex> Path.absname("../x", "bar")
"bar/../x"

基准名%28路%29

basename(t) :: binary

如果路径本身不包含任何目录分隔符,则返回路径的最后一个组件或路径本身。

实例

iex> Path.basename("foo")
"foo"

iex> Path.basename("foo/bar")
"bar"

iex> Path.basename("/")
""

基名%28 path,扩展%29

basename(t, t) :: binary

返回path带着extension脱光衣服。

此函数应用于删除可能存在或不存在的特定扩展。

实例

iex> Path.basename("~/foo/bar.ex", ".ex")
"bar"

iex> Path.basename("~/foo/bar.exs", ".ex")
"bar.exs"

iex> Path.basename("~/foo/bar.old.ex", ".ex")
"bar.old"

脏名%28路%29

dirname(t) :: binary

的目录组件。path...

实例

iex> Path.dirname("/foo/bar.ex")
"/foo"

iex> Path.dirname("/foo/bar/baz.ex")
"/foo/bar"

iex> Path.dirname("/foo/bar/")
"/foo/bar"

展开%28路径%29

expand(t) :: binary

将路径转换为绝对路径并展开任意路径。...人物与主角~...

实例

Path.expand("/foo/bar/../bar")
#=> "/foo/bar"

展开%28路径,相对[医]调至%29

expand(t, t) :: binary

展开路径相对于作为第二个参数展开任意的路径的路径。...人物。

如果路径已经是绝对路径,relative_to被忽视了。

请注意,此函数处理path领先~作为一个绝对的。

第二个参数首先扩展为绝对路径。

实例

# Assuming that the absolute path to baz is /quux/baz
Path.expand("foo/bar/../bar", "baz")
#=> "/quux/baz/foo/bar"

Path.expand("foo/bar/../bar", "/baz")
"/baz/foo/bar"
Path.expand("/foo/bar/../bar", "/baz")
"/foo/bar"

ext name%28 path%29

extname(t) :: binary

的最后一个组件的扩展。path...

实例

iex> Path.extname("foo.erl")
".erl"

iex> Path.extname("~/foo/bar")
""

加入%28列表%29

join([t, ...]) :: binary

加入路径列表。

此函数应用于将路径列表转换为路径。请注意,任何尾随斜杠在连接时都会被移除。

实例

iex> Path.join(["~", "foo"])
"~/foo"

iex> Path.join(["foo"])
"foo"

iex> Path.join(["/", "foo", "bar/"])
"/foo/bar"

加入%28左,右%29

join(t, t) :: binary

连接两条路径。

正确的路径将始终扩展到其相对格式,任何尾随斜杠都将在加入时被移除。

实例

iex> Path.join("foo", "bar")
"foo/bar"

iex> Path.join("/foo", "/bar/")
"/foo/bar"

相对%28名称%29

relative(t) :: binary

强制路径为相对路径。

实例

Unix

Path.relative("/usr/local/bin")   #=> "usr/local/bin"
Path.relative("usr/local/bin")    #=> "usr/local/bin"
Path.relative("../usr/local/bin") #=> "../usr/local/bin"

Path.relative("D:/usr/local/bin") #=> "usr/local/bin"
Path.relative("usr/local/bin")    #=> "usr/local/bin"
Path.relative("D:bar.ex")         #=> "bar.ex"
Path.relative("/bar/foo.ex")      #=> "bar/foo.ex"

相对[医]到%28路径,从%29

relative_to(t, t) :: binary

返回给定的path相对于给定的from路径。

换句话说,此函数试图删除from前缀path...

此函数不查询文件系统,因此它假定路径之间不存在符号链接。

如果找不到直接相对路径,则返回原始路径。

实例

iex> Path.relative_to("/usr/local/foo", "/usr/local")
"foo"

iex> Path.relative_to("/usr/local/foo", "/")
"usr/local/foo"

iex> Path.relative_to("/usr/local/foo", "/etc")
"/usr/local/foo"

相对[医]到[医]CWD%28路%29

relative_to_cwd(t) :: binary

获取相对于当前工作目录的路径的方便性。

如果由于某种原因无法检索当前工作目录,则此函数将返回给定的path...

根名%28路%29

rootname(t) :: binary

返回path带着extension脱光衣服。

实例

iex> Path.rootname("/foo/bar")
"/foo/bar"

iex> Path.rootname("/foo/bar.ex")
"/foo/bar"

根名%28 path,扩展名%29

rootname(t, t) :: binary

返回path带着extension脱光衣服。

此函数应用于删除可能存在或不存在的特定扩展。

实例

iex> Path.rootname("/foo/bar.erl", ".erl")
"/foo/bar"

iex> Path.rootname("/foo/bar.erl", ".ex")
"/foo/bar.erl"

分割%28路径%29

split(t) :: [binary]

将路径拆分为路径分隔符处的列表。

如果给定空字符串,则返回空列表。

在Windows上,路径在“\”和“/”分隔符上分开,如果存在驱动字母,则始终以小写形式返回。

实例

iex> Path.split("")
[]

iex> Path.split("foo")
["foo"]

iex> Path.split("/foo/bar")
["/", "foo", "bar"]

类型%28 name%29

type(t) :: :absolute | :relative | :volumerelative

返回路径类型。

实例

Unix

Path.type("/")                #=> :absolute
Path.type("/usr/local/bin")   #=> :absolute
Path.type("usr/local/bin")    #=> :relative
Path.type("../usr/local/bin") #=> :relative
Path.type("~/file")           #=> :relative

Path.type("D:/usr/local/bin") #=> :absolute
Path.type("usr/local/bin")    #=> :relative
Path.type("D:bar.ex")         #=> :volumerelative
Path.type("/bar/foo.ex")      #=> :volumerelative

通配符%28 GLOB,选项[医][]%29

wildcard(t, keyword) :: [binary]

根据给定的路径遍历路径。glob表达式并返回匹配列表。

通配符看起来像一个普通的路径,只是某些“通配符”是以一种特殊的方式解释的。以下字符是特殊的:

  • ?-匹配一个字符
  • *-匹配任意数量的字符,直到文件名末尾、下一个点或下一个斜杠。
  • **-两个相邻*作为单一模式使用,将匹配所有文件和零或多个目录和子目录。
  • [char1,char2,...]-匹配列出的任何字符;用连字符分隔的两个字符将匹配一系列字符。不要在逗号之前和之后添加空格,因为它将匹配包含空格字符本身的路径。
  • {item1,item2,...}-匹配其中一个选项,不要在逗号前后添加空格,因为它将匹配包含空格字符本身的路径。

其他人物代表自己。只有在同一位置具有完全相同字符的路径才能匹配。请注意,匹配是区分大小写的:"a"不匹配"A"...

默认情况下,模式*?不匹配以点开始的文件.除非match_dot: true给出opts...

实例

假设您有一个名为projects其中有三个药剂项目:elixir,,,ex_doc,和plug.你可以找到所有.beam中的文件。ebin每个项目的目录如下:

Path.wildcard("projects/*/ebin/**/*.beam")

如果你想同时搜索.beam.app文件,你可以:

Path.wildcard("projects/*/ebin/**/*.{beam,app}")
 © 2012–2017 Plataformatec

根据ApacheLicense,版本2.0获得许可。

扫码关注云+社区

领取腾讯云代金券