SSH.NET: как проверить, существует ли уже файл или папка в другом верхнем-нижнем регистре

В настоящее время я использую C # и SSH.NET для загрузки файлов или папок на сервер Unix. Моя проблема в том, что Unix чувствителен к регистру, тогда как Windows - нет, или, по крайней мере, не совсем. Таким образом, у меня возникает проблема, если я копирую папку с именем «test» и другую папку с именем «Test». Другой случай, конечно, не проблема для Unix, но в Windows при доступе к папке через Samba я могу видеть только содержимое одной из них.

Я хочу сделать следующее: если я загружаю файл или папку через sftp, но этот файл или папка уже существует с другой комбинацией верхнего или нижнего регистра, я хочу переименовать файл, который будет скопирован, чтобы он соответствовал уже имеющемуся имени .

Есть ли простой и удобный способ сделать это? Что мне в основном нужно, так это проверка без учета регистра, если папка или части папки уже существуют.


person Erik    schedule 18.04.2016    source источник


Ответы (1)


Вы можете использовать методы Directory.GetFiles и Directory.GetDirectories, чтобы перечислить все файлы / каталоги в каталоге, а затем выполнить сопоставление без учета регистра в вашем коде.

https://msdn.microsoft.com/en-us/library/wz42302f(v=vs.110).aspx

https://msdn.microsoft.com/en-us/library/c1sez4sc(v=vs.110).aspx

person CamW    schedule 18.04.2016
comment
Спасибо, но это мне не поможет, потому что у меня есть доступ к этой директиве, используя sftp в моем коде. можно ли это сделать, используя только методы из библиотеки renci.ssh.net? - person Erik; 11.05.2016
comment
Да, вы можете использовать библиотеку ssh.net. Здесь можно найти подробную информацию о методах вывода каталогов и файлов stackoverflow.com/questions/13572889/ - person CamW; 11.05.2016
comment
Я уже нашел эту ветку, спасибо, но у нее нет рабочего примера. Мне все еще интересно, почему я должен сам реализовать рекурсивную часть, это должно выполняться библиотекой. Имеет ли смысл, если каждый реализует собственное рекурсивное решение, и каждый должен отфильтровывать потенциальные ошибки (IsFile, remove ... и ... и т. Д.)? - person Erik; 11.05.2016
comment
Возможно, он не является прямым решением, но в нем есть вся необходимая информация, чтобы решить эту проблему самостоятельно. Имеет смысл, что библиотека не реализует рекурсивную часть, поскольку рекурсивная часть - это, по сути, просто метод, который использует библиотеку. Это ваше уникальное использование предоставленного инструмента. Попробуйте использовать имеющуюся у вас информацию, и если вы застряли, опубликуйте еще один вопрос со своим кодом. - person CamW; 11.05.2016