在ubuntu中我创建了一个共享。在Windows上,我使用以下命令将此共享安装到y:mount -o nolock \\192.168.2.44/mnt/shared Y:接下来,我想使用dotnet核心应用程序在这个共享中创建目录。此应用程序应支持nfs共享文件夹支持的任何字符。static void Main(string[] args){ // works if Y: is NFS Directory.CreateDirectory("Y:/subdir/:"); // works! Directory.CreateDirectory("Y:/:"); // works! // Directory.CreateDirectory("Y:/**"); // Does not work // Directory.CreateDirectory("Y:/?"); // Does not work try { Directory.CreateDirectory("C:/:"); // NTFS } catch (Exception e) { Console.WriteLine("Not NFS"); // ntfs does not work (as expected) }}上面的代码按预期工作;如果我想创建一个目录“:”程序允许在nfs共享上执行此操作,但不允许在ntfs驱动器上执行。我希望目录**和?。但是如果我注释掉这几行代码,就会得到一个错误。有人知道我如何在dotnet core 2.2中创建特殊字符词典吗?我已经试过的东西我试着用问号的Unicode编码Directory.CreateDirectory("Y:/\u003F");但这也会导致同样的错误。这个问题与What characters are forbidden in Windows and Linux directory names?不同,因为:上面的问题询问windows和linux文件目录中禁止的字符是什么。我的问题是,当您想从windows写入linux目录时,如何绕过这些windows限制。 最佳答案 在您的nfs服务器上需要一个ascii映射文件(ascii_mappings),它可以将您要命名文件的字符转换为ntfs文件系统的合法字符。这在NTFS上是非法的:“:\*/?|关于c# - 如何在dotnet核心CreateDirectory中支持NFS文件共享中的特殊字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56890675/
10-10 17:42