В этом случае разные файлы могут иметь одинаковые имена

Обновлено: 03.07.2024

Второй все еще говорит, что в нем есть контент?? Пишет "3 файла, 1 папка". Я попытался создать новую папку с именем 3D2 и переместил содержимое второй папки в новую папку. Все, что произошло сейчас, это то, что я потерял весь контент из второго, а контент первых все в 3D2. Я не понимаю, что происходит, и, похоже, не могу это исправить, но в обоих была нужная мне работа, и, похоже, я не могу получить содержимое второго, сколько бы я ни нажимал ctrl + z.

ууууууу. В любом случае, если кто-нибудь знает, что делать, пожалуйста, помогите мне.

Редактировать:
Хорошо, на самом деле я обнаружил, что удаление пустой папки вернуло содержимое второй, и я переместил все это в 3D2, но теперь у меня есть эта проблема:

Я не могу. Я не могу удалить эту папку-призрак в своем художественном каталоге, потому что она жалуется, что ее там нет, так как я удалил другую папку. Теперь я не могу переименовать 3D2 обратно в 3D.

Я как-то усугубил ситуацию. Также проверка каталога в командной строке показывает, что папки имеют точно такое же имя. Вы по-прежнему можете добавлять и удалять файлы из папки-призрака (я сделал резервную копию на своем рабочем столе, не волнуйтесь, лол), но теперь она еще более сломана, чем раньше.

Моя лучшая теория по этому поводу заключается в том, что когда папки имеют одинаковое имя, я заметил, что Windows имеет тенденцию объединять их вместе и создавать одну папку. Я чувствую, что у меня было две папки, я пытался их объединить, а потом по какой-то причине это не сработало, и все это сломалось. Это так расстраивает аууууууу.

Эта тема заблокирована. Вы можете подписаться на вопрос или проголосовать за него как полезный, но вы не можете отвечать в этой теме.

Сообщить о нарушении

Домогательство – это любое поведение, направленное на то, чтобы побеспокоить или расстроить человека или группу людей. К угрозам относятся любые угрозы самоубийства, насилия или причинения вреда другому человеку. Любой контент на тему для взрослых или неуместный для веб-сайта сообщества. Любое изображение, ссылка или обсуждение наготы. Любое поведение, которое является оскорбительным, грубым, вульгарным, оскверняет или демонстрирует неуважение. Любое поведение, которое может нарушать лицензионные соглашения с конечными пользователями, включая предоставление ключей продукта или ссылок на пиратское программное обеспечение. Незапрашиваемая массовая рассылка или массовая реклама. Любые ссылки на вирусы, шпионское ПО, вредоносное ПО или фишинговые сайты или их пропаганда. Любой другой неприемлемый контент или поведение, как это определено Условиями использования или Кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другим жестоким обращением с детьми или их эксплуатацией.

Ответы (6) 

Правка: опубликовал это до того, как увидел ваше редактирование! :D

По крайней мере одна, а возможно, и обе папки отображают имя из файла desktop.ini, а не фактическое имя файловой системы, поскольку они должны быть уникальными в каталоге.

Вы можете временно "отключить" это поведение, переименовав файлы. В окне проводника нажмите Shift+клик правой кнопкой мыши в фоне окна

.

C:\Users\angel\Pictures\Art

и выберите здесь Открыть окно PowerShell. Набрав gci -directory, вы увидите список всех папок --- я сомневаюсь, что вы увидите две папки с именами 3D. Теперь, чтобы отключить отображаемые имена в Проводнике, скопируйте и вставьте следующий код:

gci-каталог |

ren -newname desktop.keep -force

Тогда вы сможете увидеть истинные имена папок и соответствующим образом обращаться с ними. Я предполагаю, что вы удалите один или оба, и вам не придется беспокоиться о показе скрытых системных файлов для удаления файла desktop.keep перед запуском следующего, чтобы восстановить любые файлы desktop.ini, которые были преднамеренно (папки с пользовательскими значками или эскизы).

gci-каталог |

ren -newname desktop.ini -force

Сообщить о нарушении

Домогательство – это любое поведение, направленное на то, чтобы побеспокоить или расстроить человека или группу людей. К угрозам относятся любые угрозы самоубийства, насилия или причинения вреда другому человеку. Любой контент на тему для взрослых или неуместный для веб-сайта сообщества. Любое изображение, ссылка или обсуждение наготы. Любое поведение, которое является оскорбительным, грубым, вульгарным, оскверняет или демонстрирует неуважение. Любое поведение, которое может нарушать лицензионные соглашения с конечными пользователями, включая предоставление ключей продукта или ссылок на пиратское программное обеспечение. Незапрашиваемая массовая рассылка или массовая реклама. Любые ссылки на вирусы, шпионское ПО, вредоносное ПО или фишинговые сайты или их пропаганда. Любой другой неприемлемый контент или поведение, как это определено Условиями использования или Кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другим жестоким обращением с детьми или их эксплуатацией.

Был ли этот ответ полезен?

Извините, это не помогло.

Отлично! Благодарим за отзыв.

Насколько вы удовлетворены этим ответом?

Спасибо за ваш отзыв, он помогает нам улучшить сайт.

Насколько вы удовлетворены этим ответом?

Спасибо за отзыв.

Что вы нажимаете, что вызывает ошибку «Элемент не найден»?

Вы можете опубликовать скриншот каталога Art из cmd.exe или PowerShell?

Сообщить о нарушении

Домогательство – это любое поведение, направленное на то, чтобы побеспокоить или расстроить человека или группу людей. К угрозам относятся любые угрозы самоубийства, насилия или причинения вреда другому человеку. Любой контент на тему для взрослых или неуместный для веб-сайта сообщества. Любое изображение, ссылка или обсуждение наготы. Любое поведение, которое является оскорбительным, грубым, вульгарным, оскверняет или демонстрирует неуважение. Любое поведение, которое может нарушать лицензионные соглашения с конечными пользователями, включая предоставление ключей продукта или ссылок на пиратское программное обеспечение. Незапрашиваемая массовая рассылка или массовая реклама. Любые ссылки на вирусы, шпионское ПО, вредоносное ПО или фишинговые сайты или их пропаганда. Любой другой неприемлемый контент или поведение, как это определено Условиями использования или Кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другим жестоким обращением с детьми или их эксплуатацией.

Был ли этот ответ полезен?

Извините, это не помогло.

Отлично! Благодарим за отзыв.

Насколько вы удовлетворены этим ответом?

Спасибо за ваш отзыв, он помогает нам улучшить сайт.

Насколько вы удовлетворены этим ответом?

Спасибо за отзыв.

Привет ТМ. Я Грег, специалист по установке, обладатель 10-летнего опыта работы с Windows MVP и модератор Guardian, и я хочу вам помочь.

В настройках сканирования сначала включите сканирование на наличие руткитов.

Очистите все найденное, перезагрузите компьютер и снова запустите, пока все не станет чистым.

Если вы хотите оставить Malwarebytes в качестве сканера по запросу, вы можете отключить его пробную версию в режиме реального времени на вкладке «Настройки» > «Сведения об учетной записи».

Надеюсь, это поможет. Не стесняйтесь задавать любые вопросы и дайте нам знать, как это происходит. Я буду продолжать работать с вами, пока проблема не будет решена.

______________________________________________
Стандартный отказ от ответственности. Имеются ссылки на веб-сайты, не принадлежащие Microsoft. Страницы, кажется, предоставляют точную и безопасную информацию. Следите за рекламой на сайтах, которые могут рекламировать продукты, часто классифицируемые как ПНП (потенциально нежелательные продукты). Тщательно изучите любой продукт, рекламируемый на сайтах, прежде чем вы решите загрузить и установить его.

Windows MVP 2010-20

Миллионы людей помогли через мои уроки и лично на форумах в течение 12 лет. Теперь независимый советник.

Я не ухожу из-за вежливых и готовых к сотрудничеству.

Сообщить о нарушении

Домогательство – это любое поведение, направленное на то, чтобы побеспокоить или расстроить человека или группу людей. К угрозам относятся любые угрозы самоубийства, насилия или причинения вреда другому человеку. Любой контент на тему для взрослых или неуместный для веб-сайта сообщества. Любое изображение, ссылка или обсуждение наготы. Любое поведение, которое является оскорбительным, грубым, вульгарным, оскверняет или демонстрирует неуважение. Любое поведение, которое может нарушать лицензионные соглашения с конечными пользователями, включая предоставление ключей продукта или ссылок на пиратское программное обеспечение. Незапрашиваемая массовая рассылка или массовая реклама. Любые ссылки на вирусы, шпионское ПО, вредоносное ПО или фишинговые сайты или их пропаганда. Любой другой неприемлемый контент или поведение, как это определено Условиями использования или Кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другим жестоким обращением с детьми или их эксплуатацией.

1 человек нашел этот ответ полезным

Был ли этот ответ полезен?

Извините, это не помогло.

Отлично! Благодарим за отзыв.

Насколько вы удовлетворены этим ответом?

Спасибо за ваш отзыв, он помогает нам улучшить сайт.

Насколько вы удовлетворены этим ответом?

Спасибо за отзыв.

Привет всем, я попробую эти методы, когда вернусь домой, я написал это где-то в 2 часа ночи. Спасибо за вашу помощь! :-)

Сообщить о нарушении

Домогательство – это любое поведение, направленное на то, чтобы побеспокоить или расстроить человека или группу людей. К угрозам относятся любые угрозы самоубийства, насилия или причинения вреда другому человеку. Любой контент на тему для взрослых или неуместный для веб-сайта сообщества. Любое изображение, ссылка или обсуждение наготы. Любое поведение, которое является оскорбительным, грубым, вульгарным, оскверняет или демонстрирует неуважение. Любое поведение, которое может нарушать лицензионные соглашения с конечными пользователями, включая предоставление ключей продукта или ссылок на пиратское программное обеспечение. Незапрашиваемая массовая рассылка или массовая реклама. Любые ссылки на вирусы, шпионское ПО, вредоносное ПО или фишинговые сайты или их пропаганда. Любой другой неприемлемый контент или поведение, как это определено Условиями использования или Кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другим жестоким обращением с детьми или их эксплуатацией.

Был ли этот ответ полезен?

Извините, это не помогло.

Отлично! Благодарим за отзыв.

Насколько вы удовлетворены этим ответом?

Спасибо за ваш отзыв, он помогает нам улучшить сайт.

Насколько вы удовлетворены этим ответом?

Спасибо за отзыв.

Что при нажатии вызывает ошибку Item Not Found?

Вы можете опубликовать скриншот каталога Art из cmd.exe или PowerShell?

Кит

<р>1.На самом деле я уже не помню, но я думаю, что это я пытался изменить имя папки или что-то в этом роде, и это вышло.

<р>2.
Кроме того, теперь, когда я перезагрузил свой компьютер, оба этих 3D-файла имеют одинаковый контент. Я также думал, что не увижу двух одинаковых имен, потому что слышал об этом раньше (где каталог, который вы видите, имеет одинаковые имена, но в cmd или powershell у него два разных имени), но, видимо, это не так легко для меня, ха-ха.

Сообщить о нарушении

Домогательство – это любое поведение, направленное на то, чтобы побеспокоить или расстроить человека или группу людей. К угрозам относятся любые угрозы самоубийства, насилия или причинения вреда другому человеку. Любой контент на тему для взрослых или неуместный для веб-сайта сообщества. Любое изображение, ссылка или обсуждение наготы. Любое поведение, которое является оскорбительным, грубым, вульгарным, оскверняет или демонстрирует неуважение. Любое поведение, которое может нарушать лицензионные соглашения с конечными пользователями, включая предоставление ключей продукта или ссылок на пиратское программное обеспечение. Незапрашиваемая массовая рассылка или массовая реклама. Любые ссылки на вирусы, шпионское ПО, вредоносное ПО или фишинговые сайты или их пропаганда. Любой другой неприемлемый контент или поведение, как это определено Условиями использования или Кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другим жестоким обращением с детьми или их эксплуатацией.

Был ли этот ответ полезен?

Извините, это не помогло.

Отлично! Благодарим за отзыв.

Насколько вы удовлетворены этим ответом?

Спасибо за ваш отзыв, он помогает нам улучшить сайт.

Насколько вы удовлетворены этим ответом?

Спасибо за отзыв.

Привет ТМ. Меня зовут Грег, я специалист по установке, обладатель 10-летнего опыта работы с Windows MVP и модератор Guardian, и здесь, чтобы помочь вам.

В настройках сканирования сначала включите сканирование на наличие руткитов.

Очистите все найденное, перезагрузите компьютер и снова запустите, пока все не станет чистым.

Если вы хотите оставить Malwarebytes в качестве сканера по запросу, вы можете отключить его пробную версию в режиме реального времени на вкладке «Настройки» > «Сведения об учетной записи».

Надеюсь, это поможет. Не стесняйтесь задавать любые вопросы и дайте нам знать, как это происходит. Я буду продолжать работать с вами, пока проблема не будет решена.

______________________________________________
Стандартный отказ от ответственности. Имеются ссылки на веб-сайты, не принадлежащие Microsoft. Страницы, кажется, предоставляют точную и безопасную информацию. Следите за рекламой на сайтах, которые могут рекламировать продукты, часто классифицируемые как ПНП (потенциально нежелательные продукты). Тщательно изучите любой продукт, рекламируемый на сайтах, прежде чем принять решение о его загрузке и установке.

У меня уже есть полное право собственности на файлы, по крайней мере, из того, что я вижу, поэтому я действительно не думаю, что могу добавить что-то еще к разрешениям, которые могли бы это исправить. Также на ПК есть только одна учетная запись, моя (Yoyo). (По какой-то причине, несмотря на то, что меня везде зовут Йойо, мой ПК по-прежнему настаивает, что это ангел, который я не использовал в качестве имени ПК с 2009 года. Даже изменение его в настройках не помогает.)

<р>2. Я не совсем уверен, что вы хотите, чтобы я сделал в этом :-( Вы хотите, чтобы я переместил две папки на USB, а затем попытался восстановить его? У меня есть резервная копия файлов с тех пор, как вы перемещаете их вещи в них удаляются или скрываются.

<р>3. У меня есть Malwarebytes, и он регулярно сканировался без проблем, пока не закончилась пробная версия, что, кажется, было вчера.

Я запускаю тест сканирования, но при попытке выполнить сканирование файла в 3D-файле вызывается командная строка, такая как остановка, и я не могу ничего делать в этом командном окне. Я не знаю, я никогда не использовал scanfile, но я предположил, что сделал это правильно, например: sfc /scanfile=c: (адрес), и если это было неправильно, я думаю, что это просто сказало бы мне, что это плохой синтаксис. Это издавало какой-то шум ошибки, но не показывало никаких сообщений, поэтому я просто закрыл окно. Я займусь перезагрузкой ПК через некоторое время после того, как выполню все эти сканирования с тех пор, как они начались, и я не хочу повторять их, пока не получу от них результат.

Сообщить о нарушении

Домогательство – это любое поведение, направленное на то, чтобы побеспокоить или расстроить человека или группу людей. К угрозам относятся любые угрозы самоубийства, насилия или причинения вреда другому человеку. Любой контент на тему для взрослых или неуместный для веб-сайта сообщества. Любое изображение, ссылка или обсуждение наготы. Любое поведение, которое является оскорбительным, грубым, вульгарным, оскверняет или демонстрирует неуважение. Любое поведение, которое может нарушать лицензионные соглашения с конечными пользователями, включая предоставление ключей продукта или ссылок на пиратское программное обеспечение. Незапрашиваемая массовая рассылка или массовая реклама. Любые ссылки на вирусы, шпионское ПО, вредоносное ПО или фишинговые сайты или их пропаганда. Любой другой неприемлемый контент или поведение, как это определено Условиями использования или Кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другим жестоким обращением с детьми или их эксплуатацией.

Попытки добавить файлы с одинаковыми именами, но в разных случаях, допускают дублирование файлов в проекте при использовании IBM Rational Synergy.

Симптом

  1. Войдите в Rational Synergy Client
  2. Создайте файл (например, test.txt) в проекте
  3. Создайте другой файл с тем же именем, но с другим регистром (например, TEST.txt)

Причина

Это ограничение файловой системы Microsoft Windows, которое не позволяет размещать в одной папке два файла, различающихся только регистром.

Диагностика проблемы

Убедитесь, что режим сохранения сохранен следующим образом:

$ ccmdb info database_path /k case
сохранить

Решение проблемы

Если создание файлов с одинаковыми именами, отличающимися только регистром, является обычной практикой в ​​вашей среде, установите для базы данных более низкий регистр вместо значения по умолчанию сохранять.

Установка меньшего регистра приведет к отображению всех имен файлов в нижнем регистре и обнаружению конфликта во время создания объекта.

    Установите более низкий режим регистра для базы данных, используя следующую команду

$ ccmdb info > /k case /v lower
Значение CASE изменено на более низкое


изображение


Примечание. О преобразовании PRESERVE в LOWER

Если у вас есть сохраненная база данных прецедентов, которая уже содержит какие-либо пользовательские объекты, в имени, версии или экземпляре которых используются символы верхнего регистра, изменение регистра на "нижний" будет недопустимым. Изменение настройки регистра не приводит к преобразованию данных в существующих объектах.
Например, вы можете получить объект с именем "X", но любой запрос для "X" не найдет его, потому что запрос будет приведен к нижнему регистру для поиска имени "x".
Если у вас есть сохраненная база данных случаев, вы всегда можете изменить регистр CASE на более низкий, но это не изменит регистр "X" на "x" для ранее созданного имени объекта.

Не является ли плохой практикой давать двум очень разным файлам с одинаковым общим назначением одно и то же имя, разделяя их по разным каталогам?

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

В качестве альтернативы, за счет короткой длины имени, я мог бы использовать:

5 ответов 5

Рассмотрите соотношение затрат и выгод ваших двух вариантов:

Может ли повторное использование одного и того же имени вызвать путаницу или конфликты имен? Скорее всего нет, так как они находятся в разных папках. Название «player_stats/generator.js» эквивалентно «player_stats_generator.js». Однако, если в будущем вы увидите причину для объединения ваших js-файлов в один каталог (развертывание? Не знаю), то это должно послужить хорошим индикатором для присвоения уникальных имен.

Не приведет ли использование более длинных имен к лишнему набору текста? Возможно нет. Мало того, что многие JS IDE автоматически заполняют имена файлов в проекте, это также фрагмент кода, который, вероятно, пишется — максимум — только один раз для каждого файла. Код, который часто печатается, — это классы и функции внутри js-файлов, и они (надеюсь) не конфликтуют.

Какую информацию об ошибке вы получаете при отладке? Если наиболее распространенным отчетом об ошибке является «Ошибка в строке 34 из «, то рассмотрите возможность присвоения им уникальных имен, поскольку получение ошибок только в генераторе.js, а затем попытка угадать по контексту, какой генератор это был, может быть проблемой.

@Bergi Это зависит от браузера (и версии), IDE (если есть), системы регистрации ошибок и так далее.

На практике, если ваша IDE показывает имена файлов на вкладках, если вы используете одно и то же имя для каждого файла, вы получите вкладки с одинаковыми именами. Это может очень раздражать. У одного проекта, который я взял на сопровождение, есть эта проблема, и очень тяжело иметь 15 открытых вкладок, половина из которых с одним и тем же именем файла.

Итак. используйте более описательные имена.

Конечно, иногда необходимо, чтобы несколько файлов имели одинаковое имя [например, на многих серверах index.html ]. Меня раздражают программы, которые затрудняют определение пути, связанного с конкретным файлом.

@kmiyashiro - вероятно, да, но если у вас открыто много файлов, вкладки могут быть уменьшены по размеру (ширине) до такой степени, что вы в основном видите только имена файлов. Затем вам нужно всегда наводить указатель мыши на каждую вкладку и ждать, пока «подсказка» не отобразит полный путь/файл. Если у вас открыто только несколько файлов и только редкий случай дублирования имени, это, вероятно, приемлемо. Но при большом количестве файлов это может сильно раздражать.

Если у вас открыто столько вкладок с одинаковыми именами, я бы переключился на файл с помощью клавиш, а не пытался найти его среди множества вкладок даже с уникальными именами.

Однако использование более описательных имен может раздражать. когда вы получаете some_super_long_descriptor_that_needs_more_description.js, чтобы отличить его от some_super_long_descriptor_that_needs_more_cowbell.js

Имена файлов не обязательно должны быть разными; для этого и нужны пути. Вы представляете, сколько различных системных или программных файлов находится на вашем компьютере? Что, если у каждого из них должно быть уникальное имя? В какой-то момент мы просто делаем имя файла копией пути.

Если лучшим описанием файла Javascript в контексте client_scripts > app > player_stats действительно является генератор , его путь должен быть следующим: client_scripts/app/player_stats/generator.js .

Пути (или URL-адреса) удобны тем, что являются вложенными идентификаторами. Давайте использовать их таким образом :)

Всегда используйте описательные имена, а не короткие имена, если это не что-то вроде математической константы или переменной цикла, где соглашения рассматриваемого языка отдают предпочтение коротким именам. Например, если вы назовете переменную «пи» и зададите ей какое-то подходящее точное значение числа «пи», тогда имя будет хорошим и донесет суть. С другой стороны, если у вас есть генератор, который генерирует члены ряда Тейлора для числа Пи и складывает их вместе, чтобы получить аппроксимацию числа Пи, вы хотите назвать его как-то вроде "taylorPiGenerator или подобное".

Хорошие имена теперь экономят время на рефакторинг позже или, что еще хуже, на большие ошибки позже.

В книгах "Чистый код" и "Совершенный код" подробно рассказывается о причинах и причинах правильного наименования, но они ни в коем случае не являются единственными источниками.

Похоже, этот ответ хорошо подходит к данному конкретному примеру, но не отвечает на общий вопрос.

Это зависит от технологии, с которой вы работаете. Имена должны идентифицировать элементы, а пути должны идентифицировать контекст. Я согласен, что хорошие имена важны, но эй, пути тоже имена. Но с практической точки зрения, если вы используете что-то вроде Javascript, вероятно, лучше оставить более точные имена для конечных элементов. Если вы работаете с инструментами, которые учитывают это, например Python, рекомендуется использовать одно и то же имя с другим путем (модулем, пространством имен). Если вы посмотрите на Java, вы также найдете классы с одинаковыми именами и разными пакетами. Можно пойти еще дальше и сказать, что методы называются действиями в контексте класса, и у нас есть методы с одинаковыми именами в разных классах, которые сами могут называться одинаково, но помещаться в разные пакеты. Дзен Python гласит:

Пространства имен — это отличная идея. Давайте сделаем больше таких!

Но у javascript есть свои особенности и преимущества, поэтому я бы рекомендовал использовать разные имена (даже если файлы находятся по разным путям). Также вы можете найти шаблон модуля в javascript, который может помочь вам написать более чистый код:

Благодаря коротким именам файлов и жестким ссылкам один файл может иметь несколько имен. (И в целях сегодняшнего обсуждения я рассматриваю полный путь как имя, а не только часть после последней обратной косой черты. Не заставляйте меня возвращать угол придирки.) Например, C:\PROGRA~1 и C:\Program Files — два возможных имени для одного и того же каталога благодаря коротким именам. [Опечатка исправлена ​​в 7:15 утра.] Если вы создали жесткие ссылки, вы можете дать одному файлу два совершенно не связанных имени, и эти имена даже не обязательно должны находиться в одном и том же каталоге.

С другой стороны, у вас не может быть двух файлов с одинаковыми именами. Что бы это вообще значило? Какой из них вы получите, если сделаете открытый вызов? Как бы вы открыли другой? Черт возьми, еще до того, как мы дойдем до этого момента: как вообще можно создать два файла с одинаковыми именами? Если вы вызовете CreateFile для создания «второго» файла, он просто откроет существующий!

Вот почему меня сбивает с толку этот вопрос, который задает:

Я видел несколько случаев, когда люди писали свою собственную версию GetLongPathName (обычно потому, что им нужна поддержка NT4) с помощью FindFirstFile. Существуют ли ситуации, когда этот подход вернет неправильный путь? Безопасно ли это на практике, потому что FindFirstFile("foo.bar") всегда будет сначала возвращать точное совпадение, прежде чем возвращать "foo.barbaz"?

В этом вопросе предполагается, что в каталоге могут быть два файла с одинаковым именем: один — это файл «foo.bar»; другой — это файл с длинным именем «foo.barbaz» и коротким именем «foo.bar».

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

  1. Создайте файл «foo.barbaz». Ему присваивается короткое имя «foo.bar».
  2. Создайте файл «foo.bar». При этом создается новый файл с именем «foo.bar», который конфликтует с коротким именем существующего файла «foo.barbaz».

За исключением того, что этого не произойдет. Когда вы выполняете шаг 2, попытка создать файл «foo.bar» просто перезаписывает существующий файл, одним из имен которого является «foo.bar». Результат: Один файл с длинным именем «foo.barbaz» и коротким именем «foo.bar».

Другой сценарий может выглядеть следующим образом:

  1. Создайте файл «foo.bar».
  2. Создайте файл «foo.barbaz». Файловая система автоматически назначает короткое имя «foo.bar».

За исключением того, что это не то, что происходит. На втором этапе файловая система генерирует короткое имя типа «foo~1.bar» специально, чтобы избежать конфликта имен.

Вы можете запустить эти эксперименты самостоятельно из командной строки для подтверждения. Команда «dir /x» пригодится.

Читайте также: