Меня, как и некоторых до меня, смущает ограничение максимальной длины пути. Я успешно перенес дерево файлов на NAS с помощью robocopy и нового компьютера с Windows 10.
На исходном компьютере все файлы были ограничены 260 символами. Они были скопированы робокопией в путь \nas-3tb-backup\Public\Save_2019 из пути e:. Я хотел потом проверить это с помощью небольшой программы на С#, но мне это не удалось. Ни FileInfo, ни File.OpenRead не могут найти файл с расширенным путем по имени NAS. Все программы, такие как Блокнот, Visual Studio Code, Проводник Windows, не имеют проблем с отображением или открытием этого файла. Я попытался использовать префикс \\?\, который показан здесь: https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN#maxpath Но попытка с \ \?\\\nas-3tb-backup---- не удалось. В связанной статье все еще есть подсказка по расширению пути при изменении реестра. Я хочу избежать этого, потому что тогда мне пришлось бы менять все компьютеры с Windows, а поскольку собственные программы Windows работают без взлома реестра, это должно быть для меня возможно.
string fn1 = @"\\?\\\nas-3tb-backup\Public\VeryLongPathToFile";
bool b1 = new FileInfo(fn1).Exists;
if (b1) {
using (FileStream stream = File.OpenRead(fn1)) {
var b = stream.ReadByte();
}
}