Коли я намагаюся зберегти файл, якщо я використовую спеціальні символи в імені (наприклад двокрапка, знак питання чи знак оклику) у Windows, я отримую повідомлення про те, що ім'я файлу недійсне.
Чому так?
Коли я намагаюся зберегти файл, якщо я використовую спеціальні символи в імені (наприклад двокрапка, знак питання чи знак оклику) у Windows, я отримую повідомлення про те, що ім'я файлу недійсне.
Чому так?
Відповіді:
Є кілька символів, які мають особливе значення для Windows (і для DOS, звідки походить більшість символів)
від MSDN :
Ім'я файлу не може містити жодного з наступних символів:
\ /: *? "<> |
/є комутатором (а також роздільником каталогів).
\є роздільником каталогів.
:є позначенням приводу.
*і ?використовуються для пошуку.
"це спосіб дозволу пробілів у параметрах.
<і >є перенаправлення, які дозволяють вводити та виводити програму з іншого та іншого, ніж екран / клавіатура.
|- це труба, яка дозволяє використовувати вихід з однієї програми як вхід до наступної.
\ ? *і "є єдиними, які дійсно потрібні у поточному синтаксисі, оскільки інші символи корисні лише поза лапками. Виняток: який корисний лише як другий символ, який може бути поза законом, дозволяючи його в іншому місці. Іншими словами, жоден файл не названий A:A letter's story.txt, але немає проблеми з ім’ямSarah: My favorite cat.txt
<>"є зарезервованими символами wildcard. Windows використовує їх для реалізації складної семантики для DOS *?.при перекладі на рідну NT, яка має просту семантику для *?.. Шість символів підстановки зарезервовано, оскільки Windows реалізує відповідність підстановочних символів у самій файловій системі, тобто безпосередньо в NtQueryDirectoryFileсистемному виклику, без механізму виходу. У Unix символи підстановки реалізуються на рівні програми, як правило, оболонкою, яка підтримує їх виведення.
:зазвичай зарезервовано у файлах файлів, але не у шляхах до файлів. Він використовується для назв пристроїв і як роздільник для потоків файлів (наприклад, "ім'я файлу: потік: потік"). Крім того, деякі файлові системи, такі як файлова система спільної папки VirtualBox, дозволяють :, |і керуючі символи ASCII (1-31) у назви файлів, але вони зарезервовані у всіх файлових системах Microsoft, крім файлової системи з іменованим каналом.