我正在尝试从本地网络中的 Windows 计算机中找出共享驱动器中是否存在文件。该驱动器可以通过我的机器轻松安装和访问,并且不需要凭据。我正在使用 Visual Studio for Mac。
我在 C# 中使用以下代码并且存在是错误的:
FileInfo fileInfo = new FileInfo(@"\\servername\folder\file.pdf");
bool exists = fileInfo.Exists;
我在windows下试过代码,exist是真的。 我不知道 Mac 和 Windows 之间的不同之处。
我认为问题是 FileInfo 实际上没有访问参数中的共享驱动器和路径,检查具有 FullPath 属性的文件信息,如下所示。
"/Users/me/Projects/CurrentProjectFolder/\\\\servername\\folder\\file.pdf"
在用户路径下。 请告诉我为什么以及如何解决。
来自 Windows 的共享将挂载在 macOS 的
/Volumes
下。如果您从 folder
挂载 servername
,则本地路径将为 /Volumes/folder
.
例如
@"/Volumes/folder/file.pdf"
\\servername\folder\file.pdf
是 UNC 路径,看来 UNC 路径仅在 Windows 上受支持。
UNC 路径未被识别并被解释为未植根。因为它不是根目录,所以预先设置了当前目录,导致:
/Users/me/Projects/CurrentProjectFolder/\\\\servername\\folder\\file.pdf