确定 .NET 中网络路径的文件系统
Determine the File System of a Network Path in .NET
对于我的一个项目,我希望利用 Alternate Data Streams,这是 NTFS 文件系统的一项功能,您可以在给定的 link 阅读更多相关信息。由于该功能是 NTFS 独有的,我需要进行初步检查以确保我正在使用的目录正在使用该文件系统。
如果目录在本地驱动器上,我可以使用 System.IO.DriveInfo.DriveFormat
检查文件系统。但是,如果目录是 network/UNC 路径,例如 \Computer\Folder\Subfolder
我不能使用 DriveFormat
class.
有什么方法可以找到网络共享的底层文件系统?我一直无法在任何地方找到答案。
如果您查看 kernel32.dll
中的 source of the DriveInfo
class's DriveFormat
property, you can see it is making a native call to GetVolumeInformationA 以获得实际的驱动器格式。
使用 \Computer\Folder\
等网络 UNC 路径调用此函数确实会为您提供所需的结果(包括尾部斜线,但不包括子文件夹)。在您自己的代码中使用 dll import and proper error checking 执行相同的模式有点工作,但这是可能的!
对于我的一个项目,我希望利用 Alternate Data Streams,这是 NTFS 文件系统的一项功能,您可以在给定的 link 阅读更多相关信息。由于该功能是 NTFS 独有的,我需要进行初步检查以确保我正在使用的目录正在使用该文件系统。
如果目录在本地驱动器上,我可以使用 System.IO.DriveInfo.DriveFormat
检查文件系统。但是,如果目录是 network/UNC 路径,例如 \Computer\Folder\Subfolder
我不能使用 DriveFormat
class.
有什么方法可以找到网络共享的底层文件系统?我一直无法在任何地方找到答案。
如果您查看 kernel32.dll
中的 source of the DriveInfo
class's DriveFormat
property, you can see it is making a native call to GetVolumeInformationA 以获得实际的驱动器格式。
使用 \Computer\Folder\
等网络 UNC 路径调用此函数确实会为您提供所需的结果(包括尾部斜线,但不包括子文件夹)。在您自己的代码中使用 dll import and proper error checking 执行相同的模式有点工作,但这是可能的!