File.Exists 无法识别 ~ Mac 上的快捷方式?
File.Exists doesn't recognise ~ shortcut on Mac?
File.Exists("~/Documents/test.dat")
returns 错误,但 File.Exists("Users/MyUser/Documents/test.dat")
returns 正确。
~
是您的主目录 /Users/User
在 MacOS 上的快捷方式,这是一个错误还是一个似乎不受支持的记录功能?
~
字符特定于 shell。例如,Bash 有一个很大的 set of behaviors,以 ~
字符开头的路径可以做到。
当您使用大多数语言进行编程时,此扩展不可用,因为您不在 bash(或其他)shell 中。相反,我会得到 $HOME
环境变量。对于 C#,它看起来像:
File.Exists(GetEnvironmentVariable("HOME") + "/Documents/test.dat")
虽然我还没有测试过这个。
编辑
如前所述,另一种可能性是使用 Environment.SpecialFolder 枚举。尽管许多枚举非常 Windows 特定,但这意味着成为一个跨平台助手。根据您的评论,枚举 Environment.SpecialFolder.MyDocuments
应该将您带到 Mac 上的 /Users/username/Documents
,因为这与 Windows 中的 C:\Users\username\My Documents
相同。但它似乎不一样。真可惜,因为它允许更多的跨平台代码。
File.Exists("~/Documents/test.dat")
returns 错误,但 File.Exists("Users/MyUser/Documents/test.dat")
returns 正确。
~
是您的主目录 /Users/User
在 MacOS 上的快捷方式,这是一个错误还是一个似乎不受支持的记录功能?
~
字符特定于 shell。例如,Bash 有一个很大的 set of behaviors,以 ~
字符开头的路径可以做到。
当您使用大多数语言进行编程时,此扩展不可用,因为您不在 bash(或其他)shell 中。相反,我会得到 $HOME
环境变量。对于 C#,它看起来像:
File.Exists(GetEnvironmentVariable("HOME") + "/Documents/test.dat")
虽然我还没有测试过这个。
编辑
如前所述,另一种可能性是使用 Environment.SpecialFolder 枚举。尽管许多枚举非常 Windows 特定,但这意味着成为一个跨平台助手。根据您的评论,枚举 Environment.SpecialFolder.MyDocuments
应该将您带到 Mac 上的 /Users/username/Documents
,因为这与 Windows 中的 C:\Users\username\My Documents
相同。但它似乎不一样。真可惜,因为它允许更多的跨平台代码。