от
В Ubuntu я создал акцию. В Windows я смонтировал этот ресурс на Y, используя:
mount 

Далее я хочу использовать основное приложение 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");
Но это приводит к той же ошибке. Этот вопрос НЕ совпадает с тем, какие символы запрещены в именах каталогов Windows и Linux? так как: Приведенный выше вопрос спрашивает, какие запрещенные символы находятся в каталогах файлов Windows и Linux. Мой вопрос о том, как обойти эти ограничения Windows, когда вы хотите писать в каталог Linux из Windows.              

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.

1 Ответ

0 голосов
от
Вам необходим файл сопоставления ASCII (
ascii_mappings
) на вашем сервере NFS, который переводит символы, которым вы хотите присвоить имена своим файлам, для допустимых символов для файловой системы NTFS. Это незаконно в NTFS: ":
...