Техницкое
Вопрос комьпьютерного ламера: как устроено ограничение на размеры имени файлов в Windows?
Периодически сталкиваюсь с проблемой, когда система отказывается копировать файлы, ссылаясь на слишком длинное название. При этом она прекрасно их сохраняет с этими названиями, и так же прекрасно перемещает между директориями. А вот копировать - отказывается.
Приходится идти кривым путем, то есть вместо простого копирования файла из директории А в директорию Б - открывать файл и сохранять его заново в нужной директории.
Как такое может быть? Может быть, где-то выставлено специальное ограничение на длину имени копируемого файла, и можно это ограничение подредактировать, выставив его таким же, как ограничение на длину имени файла при сохранении и перемещении?
Периодически сталкиваюсь с проблемой, когда система отказывается копировать файлы, ссылаясь на слишком длинное название. При этом она прекрасно их сохраняет с этими названиями, и так же прекрасно перемещает между директориями. А вот копировать - отказывается.
Приходится идти кривым путем, то есть вместо простого копирования файла из директории А в директорию Б - открывать файл и сохранять его заново в нужной директории.
Как такое может быть? Может быть, где-то выставлено специальное ограничение на длину имени копируемого файла, и можно это ограничение подредактировать, выставив его таким же, как ограничение на длину имени файла при сохранении и перемещении?
no subject
http://msdn.microsoft.com/en-us/library/aa365247.aspx
no subject
no subject
В то же время, есть более новые API, которые поддерживают суммарную длину пути 32,767 символов. Если программа (например, Word) пользуется ими, то она может создать файл, который старые API не могут.
no subject
no subject
Для копирования нужно один файл открыть для чтения, второй для записи, и циклом копировать из первого во второй, пока файл не закончится. После этого оба файла надо закрыть.
Для перемещения внутри одного логического диска нужно просто сказать файловой системе откуда и куда переносится файл, и система его перенесёт, не открывая.
Иногда перенос файла требует копирования - например, при перемещении между жестким и сетевым дисками, или при копировании на другой логический диск.
no subject
no subject
Это более правдоподобно, чем старые API в самом эксплорере.
no subject
Можно представить себе организацию каталогов, которая могла бы отслеживать образование слишком длинных имён и при перемещении. Но это непросто и небесплатно в смысле производительности.
(Если бы речь шла о Linux VFS layer, была бы не гипотеза, а инфа 100%. В случае Windows, пожалуй, всё-таки гипотеза, но я очень удивлюсь, если она не соответствует действительности).
no subject
no subject
no subject
no subject
no subject