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

Обновлено: 21.11.2024

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

В окне "Параметры сохранения файла" укажите папку с файлом, в которой вы хотите сохранить отсканированное изображение.
Нажмите переключатель "Документы" или "Изображения" либо переключатель "Мои документы" или "Мои изображения".
Если вы хотите выбрать другую папку, нажмите кнопку-переключатель «Другое», затем нажмите «Обзор» (Windows) или «Выбрать» (Mac OS X) и выберите папку.
Если вы хотите сохранить изображение на рабочем столе, нажмите кнопку «Другое». переключатель.

Укажите правила для имени файла, которое получает каждое отсканированное изображение. Отображается пример имени файла на основе текущих правил именования. Чтобы изменить правила именования, нажмите «Изменить».

Укажите префикс имени файла с помощью строки буквенно-цифровых символов. К имени файла автоматически добавляется трехзначное число, но при желании вы можете изменить начальный номер. Если вы сканируете несколько изображений одновременно, каждое изображение получит свой трехзначный номер. Нажмите "ОК".

Нажмите стрелку, чтобы открыть список Тип, и выберите формат файла, как описано в следующей таблице. В зависимости от формата кнопка «Параметры» может быть доступна для выполнения подробных настроек.

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

Формат сжатого файла, в котором можно выбрать уровень сжатия. Формат JPEG позволяет сильно сжимать данные изображения. Однако чем выше степень сжатия, тем ниже качество изображения. Любые потерянные данные о качестве изображения не могут быть восстановлены, и качество ухудшается при каждом сохранении данных. Формат TIFF рекомендуется, когда требуется модификация и ретушь.

Формат TIFF, в котором несколько страниц сохраняются в один и тот же файл. Вы также можете редактировать отсканированные изображения перед их сохранением. Дополнительные сведения см. в справке по Epson Scan. Чтобы открывать файлы Multi-TIFF, вам нужна программа, которая его поддерживает.

Формат документа, который можно читать в системах Windows и Macintosh (независимо от платформы). Для использования документов PDF в Windows вам потребуется Adobe Reader или Acrobat. Многостраничные документы можно сохранить как один файл PDF. При сохранении цветных изображений или изображений в оттенках серого в формате PDF можно выбрать Уровень сжатия.

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

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

Перезаписывать любые файлы с тем же именем
Выберите этот параметр, если вы хотите повторно использовать выбранное имя файла и местоположение и перезаписать предыдущие файлы с теми же именами.

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

Открыть папку с изображением после сканирования
Выберите этот параметр, если хотите, чтобы Проводник Windows или Macintosh Finder автоматически открывали папку, в которой сохранен файл отсканированного изображения, когда Epson Scan завершает сканирование.

Показывать диалоговое окно «Добавить страницу» после сканирования
Выберите этот параметр, если хотите, чтобы окно подтверждения добавления страницы автоматически появлялось после каждого сканирования в PDF или мульти-Tiff. Окно подтверждения добавления страницы содержит кнопки «Добавить страницу», «Редактировать страницу» и «Сохранить файл».

Однако мне нужно подробное руководство, учитывающее двухбайтовые символы. Ссылки на внешние ресурсы меня не устраивают.

Сначала мне нужно создать каталог в файловой системе, используя имя, которое может содержать запрещенные символы, поэтому я планирую заменить эти символы символами подчеркивания. Затем мне нужно записать этот каталог и его содержимое в zip-файл (используя Java), поэтому буду признателен за любые дополнительные советы относительно имен zip-каталогов.

Некоторые символы, которые вы упомянули, действительно разрешены в Windows. Проверьте это: echo abc > "ab.;,=[1]"

@DavidC.Bishop: В этом сообщении SO утверждается, что ядро ​​Linux не позволит вам работать с именем файла, содержащим косую черту. Удалось ли вам заставить это работать?

«/ не является незаконным в Linux. Вам просто нужно экранировать его с помощью \ при вводе» — это утверждение совершенно неверно. Компоненты имени файла не могут содержать /, и его экранирование не имеет никакого эффекта.

19 ответов 19

Давайте не будем усложнять и сначала ответим на вопрос.

Непечатаемые символы

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

Примечание. Несмотря на то, что в файловых системах Linux/Unix разрешено создавать файлы с управляющими символами в имени файла, работа с такими файлами может стать кошмаром для пользователей.

Зарезервированные имена файлов

Следующие имена файлов зарезервированы:

(как сами по себе, так и с произвольными расширениями файлов, например LPT1.txt ).

Другие правила

Имена файлов не могут заканчиваться пробелом или точкой.

Вы не просили об этом, но на всякий случай: двоеточие : и косая черта / в зависимости от контекста не разрешены (например, Finder поддерживает косые черты, терминал поддерживает двоеточия). (Подробнее)

Новые строки не запрещены в Linux. Хотя я бы сказал, что они должны быть. и если NUL запрещен в Linux, то он запрещен и в Windows, он служит той же цели.

@Soaku: конечно, нет, поскольку мир не вращается вокруг Microsoft. Зачем добавлять ненужные ограничения, когда есть только два символа, которые абсолютно необходимо запретить?

@firegurafiku «/» — это просто условность — имена каталогов в любом случае хранятся отдельно друг от друга, поэтому «/» может без проблем появляться в именах (если разрешено). Если используется в имени каталога/файла внутри пути, он должен быть экранирован, но это относится и ко многим другим символам. Работа с '\0' потребует отдельного хранения длины строки везде, что на самом деле сложнее.

"В большинстве дистрибутивов Linux вы можете назвать файл с помощью косой черты." -- Нет, нельзя. '/' всегда рассматривается ядром, а не только оболочкой, как разделитель каталогов. Невозможно обойти это с помощью программы C, скрипта Python или любого другого способа.

«Всеобъемлющее руководство» по запрещенным символам в именах файлов не будет работать в Windows, поскольку оно резервирует не только символы, но и имена файлов. Да, такие символы, как * " ? и другие, запрещены, но существует бесконечное количество имен, состоящих только из допустимых символов, которые запрещены. Например, пробелы и точки являются допустимыми символами имени файла, но имена, состоящие только из этих символов, запрещены.

Windows не различает символы верхнего и нижнего регистра, поэтому вы не можете создать папку с именем A, если папка с именем a уже существует. Хуже того, кажущиеся разрешенными имена, такие как PRN и CON и многие другие, зарезервированы и не разрешены. Windows также имеет несколько ограничений по длине; имя файла, действительное в одной папке, может стать недействительным при перемещении в другую папку. Правила именования файлов и папок находятся в документах Microsoft.

Как правило, вы не можете использовать пользовательский текст для создания имен каталогов Windows. Если вы хотите разрешить пользователям называть все, что они хотят, вы должны создать безопасные имена, такие как A , AB , A2 и др., хранить сгенерированные пользователем имена и эквиваленты их путей в файле данных приложения и выполнять сопоставление путей в вашем приложении. .

Если вам абсолютно необходимо разрешить имена папок, созданные пользователями, единственный способ определить, являются ли они недействительными, — перехватить исключения и предположить, что имя недопустимо. Даже это чревато опасностью, поскольку исключения, создаваемые для отказа в доступе, автономных дисков и нехватки места на диске, пересекаются с исключениями, которые могут создаваться для недопустимых имен. Вы открываете огромную банку боли.

Ключевая фраза из ссылки MSDN: «[и] любой другой символ, который не разрешен целевой файловой системой». В Windows могут быть разные файловые системы. Некоторые могут разрешать Unicode, другие — нет. Как правило, единственный безопасный способ проверить имя — попробовать его на целевом устройстве.

Есть некоторые рекомендации, и "существует бесконечное количество имен, состоящих только из допустимых запрещенных символов" неконструктивно. Точно так же «Windows не различает символы верхнего и нижнего регистра» является глупым исключением — ОП спрашивает о синтаксисе, а не о семантике, и ни один здравомыслящий человек не скажет, что имя файла например, файл A.txt был недействительным, поскольку файл .TXT может существовать.

COPY CON PRN означает чтение с клавиатуры или, возможно, стандартного ввода и копирование на принтер. Не уверен, что это все еще действует в современных окнах, но определенно было в течение длительного времени. В старые времена вы могли использовать его для ввода текста, а матричный принтер просто выводил его.

@JimBalter Если я не ошибаюсь, это неконструктивно, потому что «бесконечное количество имен, состоящих только из допустимых запрещенных символов» довольно бессмысленно, если правила для имен файлов четко определены и сами по себе не бесконечны. Ничто в этом ответе не оправдывает описание возможностей как бесконечных таким образом, чтобы это было полезно или полезно для читателя. Например. сравните следующее: (1) В Linux «/» не допускается. (2) Полное руководство для Linux невозможно, потому что существует бесконечное количество запрещенных имен, например. "/", "//", "///", "а/а", "б/б" и т. д.

В Linux и других системах, связанных с Unix, есть только два символа, которые не могут использоваться в имени файла или каталога: NUL '\0' и косая черта '/' . Косая черта, конечно, может появляться в имени пути, разделяя компоненты каталога.

Ходят слухи, что у Стивена Борна (известного как «оболочка») был каталог, содержащий 254 файла, по одному на каждую букву (код символа), которая может встречаться в имени файла (исключая / , '\0' ; имя . было текущим каталогом, конечно). Он использовался для тестирования оболочки Bourne и регулярно наносил ущерб неосторожным программам, таким как программы резервного копирования.

Другие люди рассмотрели правила для имен файлов Windows со ссылками на Microsoft и Википедию по этой теме.

Обратите внимание, что в MacOS X файловая система нечувствительна к регистру. Текущие версии позволяют двоеточие : в именах файлов, хотя исторически это не всегда было так:

Использование имен, образованных исключительно из этих символов, позволяет избежать большинства проблем, хотя Windows по-прежнему добавляет некоторые сложности.

Когда Стив Борн писал свою оболочку Unix (известную как оболочка Борна), он создал каталог из 254 файлов с односимвольными именами, по одному для каждого значения байта, кроме '\0' и косая черта, два символа, которые не могут использоваться в именах файлов Unix. Он использовал этот каталог для всевозможных тестов сопоставления с образцом и токенизации. (Разумеется, каталог test был создан программой.) В течение многих лет этот каталог был проклятием для программ обхода дерева файлов; он испытал их на прочность.

Обратите внимание, что каталог должен содержать записи. и .. , так что, возможно, это было 253 файла (и 2 каталога) или 255 записей имен, а не 254 файла. Это не влияет на эффективность анекдота или на описанное в нем тщательное тестирование.

Функция DIALOG_PICKFILE позволяет интерактивно выбирать файл или несколько файлов с помощью собственного графического диалогового окна выбора файлов платформы. Вы также можете ввести имя несуществующего файла (см. описание ключевого слова WRITE). Когда задано ключевое слово DIRECTORY, вы можете выбрать каталог (или создать и выбрать каталог в Windows) с помощью диалогового окна «Обзор папок».

Ввод имен файлов вручную

После отображения диалогового окна выбора файла вы можете ввести имя файла вручную, введя имя в поле имени файла (Windows) или поле выбора (Motif).

Окна

В системах Microsoft Windows имена файлов можно вводить так, как они отображаются в Проводнике Windows, включая пробелы. Если установлено ключевое слово MULTIPLE_FILES, каждое имя файла должно быть заключено в двойные кавычки, а имена файлов должны быть разделены пробелами. Например, чтобы выбрать два файла с именами First File.txt и Second File.txt , введите в поле Имя файла следующее:

Мотив

Чтобы ввести имя файла, содержащее пробел в системе Motif, замените пробел знаком "\". Точно так же, если имя файла содержит символ «\», экранируйте литерал «\» другим символом «\». Если задано ключевое слово MULTIPLE_FILES, имена файлов должны быть разделены пробелами. Например, чтобы выбрать два файла с именами First File.txt и Back\slash File.txt, введите в поле Selection следующее:

Синтаксис

Возвращаемое значение

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

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

Ключевые слова

РАСШИРЕНИЕ_ПО УМОЛЧАНИЮ

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

DIALOG_PARENT

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

КАТАЛОГ

Установите это ключевое слово для отображения только существующих каталогов в каталоге, указанном ключевым словом PATH. Если путь не указан, установка этого ключевого слова показывает каталоги в текущем каталоге. Диалоговое окно «Обзор папок» открывается в каталоге, указанном в определении пути. Отдельные файлы не отображаются. Возвращаемое значение содержит путь к выбранному каталогу или каталогу, созданному и выбранному пользователем.

DISPLAY_NAME

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

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

В Windows это ключевое слово также влияет на фильтрацию списка файлов, если используется подстановочный знак, но это ключевое слово следует использовать для указания конкретного имени файла. Чтобы вывести только файлы определенного типа, используйте ключевое слово FILTER.

ФИЛЬТР

Задайте для этого ключевого слова строковое значение или массив строк, определяющих типы файлов, которые должны отображаться в списке файлов. Это ключевое слово используется для уменьшения количества файлов, отображаемых в списке файлов. Пользователь может изменить фильтр, если не задано ключевое слово FIX_FILTER. Если значение содержит вектор строк, для фильтрации файлов используется несколько фильтров. Фильтр *.* автоматически добавляется к любому указанному вами фильтру.

Например, чтобы отобразить в окне выбора файлов только файлы типа .jpg , .tif или .jpg, можно использовать следующий код:

Список фильтров, показанный выше, отображается в виде пяти параметров в диалоговом окне:

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

Список фильтров, показанный выше, отображается в виде пяти параметров в диалоговом окне:

Ключевое слово FILTER можно при желании установить равным массиву n x 2. В этом случае первый вектор содержит типы файлов, а второй вектор содержит список описаний, которые отображаются в диалоговом окне вместо строк типов файлов. Например:

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

В Microsoft Windows пользователь не может изменить отображаемый фильтр. Пользователь может ввести строку фильтра в поле Имя файла, чтобы интерактивно обновить список отображаемых файлов. Например, ввод *.pro в поле «Имя файла» приводит к отображению только файлов .pro.

FIX_FILTER

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

В Microsoft Windows строку фильтра нельзя изменить, но пользователь может ввести строку фильтра в поле Имя файла, чтобы в интерактивном режиме обновить список отображаемых файлов, даже если установлен FIX_FILTER.

GET_PATH

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

ГРУППА

Это ключевое слово устарело и было заменено ключевым словом DIALOG_PARENT . Код, в котором используется ключевое слово GROUP, продолжит работать, как и прежде, но мы рекомендуем использовать во всем новом коде DIALOG_PARENT.

НЕСКОЛЬКО_ФАЙЛОВ

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

ДОЛЖЕН_СУЩЕСТВОВАТЬ

Установите это ключевое слово, чтобы разрешить выбор только уже существующих файлов.

ПЕРЕЗАПИСЬ_ПРОМТ

Если это ключевое слово установлено вместе с ключевым словом WRITE, и пользователь выбирает файл, который уже существует, то будет отображаться диалоговое окно с вопросом, хочет ли пользователь заменить существующий файл или нет. При множественном выборе пользователю предлагается отдельно для каждого файла. Если пользователь выбирает Нет, снова отображается диалоговое окно выбора файла; если пользователь выбирает Да, то выбор разрешен. Это ключевое слово не действует, если не задано также ключевое слово WRITE.

Задайте для этого ключевого слова строку, содержащую начальный путь для выбора файлов. Относительные пути добавляются к текущему рабочему каталогу IDL. Если это ключевое слово не задано, используется текущий рабочий каталог IDL. (Обсуждение текущего рабочего каталога IDL по умолчанию см. на компакт-диске.)

Установите это ключевое слово, чтобы сделать заголовок диалогового окна "Выбрать файл для чтения".

ИМЯ_РЕСУРСА

Установите это ключевое слово равным строке, содержащей имя ресурса системы X Window, которое будет применено к диалоговому окну.

НАЗВАНИЕ

Задайте для этого ключевого слова скалярную строку, которая будет использоваться для заголовка диалогового окна. Если он не указан, по умолчанию используется заголовок «Выберите файл».

НАПИСАТЬ

Установите это ключевое слово, чтобы сделать заголовок диалогового окна "Выбрать файл для записи".

Примеры

Создайте диалоговое окно DIALOG_PICKFILE, позволяющее пользователям выбирать только файлы с расширением "pro". Используйте заголовок «Select File to Read» и сохраните имя выбранного файла в переменной file. Введите:

Создайте диалоговое окно DIALOG_PICKFILE, позволяющее пользователю выбрать файл DICOM. Следующий код задает начальный путь к каталогу данных, содержащемуся в каталоге примеров каталога установки IDL.

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

Рисунок 3-39: Выбор отфильтрованного файла

Используйте ключевое слово DIRECTORY для DIALOG_PICKFILE, чтобы открыть диалоговое окно «Обзор папок». Ключевое слово PATH указывает первоначальный выбор каталога, а ключевое слово TITLE предоставляет пользователю дополнительные инструкции в теле диалогового окна.

На следующем рисунке показаны результаты выдачи этого оператора на платформе Windows.

Благодаря достижениям в области вычислительной техники перемещение файлов между различными платформами стало намного проще, чем всего несколько лет назад. Принятие стандарта UNICODE для кодировки символов и кросс-совместимости между операционными системами привело к тому, что проблемы с открытием файла, полученного в виде вложения в электронное письмо, загруженного с веб-сайта или доступного на платформе облачного хранилища, стали крайне редкими, но проблемы все еще могут возникать. .

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

Большинство современных файловых систем и операционных систем, в которых они используются, поддерживают гораздо более длинные имена файлов, чем персональные компьютеры, работающие под управлением Microsoft DOS и ранних версий Windows. Эти компьютеры использовали имя файла 8.3, которое позволяло восемь символов слева от точки и три символа справа, чтобы указать компьютеру, какое приложение использовать для его отображения. Однако по-прежнему можно столкнуться с проблемами, связанными с длиной имени файла.

Принятие правильных соглашений об именах файлов может помочь гарантировать, что файлы будут работать с различными операционными системами и форматами дисков, такими как Windows, Linux, Mac OS X и UNIX. Именование файлов также является важным фактором при передаче файлов через Интернет, когда может быть неочевидно, какая компьютерная платформа использовалась при первоначальном создании файлов.

Имена файлов могут быть как описательными, так и не описательными. Описательные имена файлов полезны для небольших четко определенных проектов с существующими схемами идентификации, которые связывают цифровой объект с исходным материалом. Однако непоследовательное применение терминов или опечатки будут способствовать ошибкам индексации и сортировки. Неописательные имена файлов обычно представляют собой генерируемые системой последовательные числовые строки, такие как цифровой идентификационный номер, и часто связаны с метаданными, хранящимися в другом месте. Неописательные имена файлов часто создаются для крупномасштабных проектов оцифровки и могут использовать цифровой идентификационный номер и числовые последовательности для обозначения пакетных или родительско-дочерних отношений. Преимущество неописательных имен заключается в том, что меньше вероятность повторения или неуникальных имен файлов в структуре данных.

Некоторые приложения и компьютерные скрипты могут не распознавать пробелы или иначе обрабатывать ваши файлы при использовании пробелов. Лучше всего заменять пробелы в именах файлов подчеркиванием (_) или дефисом (-). В приложении B бюллетеня NARA 2015-04 указано, что пробелы в именах файлов запрещены. Веб-среды переводят пробелы и отображают их как «%20». Например, «Имя файла.doc» будет отображаться в URL-адресе как «Файл%20Name.doc», где?. Это изменение может привести к путанице при определении фактического имени файла.

Следует избегать пунктуации, символов или специальных символов (точки, запятые, круглые скобки, амперсанд, звездочки и т. д.). Некоторые из этих символов используются в операционных системах для выполнения определенных задач, например для обозначения уровней папок в продуктах Microsoft и операционных системах Mac. Точки используются для идентификации форматов файлов, таких как .jpg и .doc.

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