Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Filesystem Home

Boost , ,

boost.png (6897 bytes) Filesystem Library
Version 3
Home  Учебник  Ссылка  FAQ  Релизы  Портативность  V3 Intro  V3 Design  Пренебрежение  Отчеты об ошибках  

Contents
Introduction
Documentation
Using the library
Coding guidelines
Cautions
Headers
Example programs
Implementation
Macros
Building the object-library
Notes for Cygwin users
Version history
  with acknowledgements

Introduction

Библиотека Boost.Filesystem предоставляет возможности для манипулирования файлами и каталогами и путями их идентификации.

К особенностям библиотеки относятся:

  • Современный интерфейс C++, совместимый со стандартной библиотекой C++.

Многие пользователи говорят, что интерфейс является их основной мотивацией для использования Boost. Файловая система. Им нравится использование знакомых идиом на основе стандартных библиотечных контейнеров, итераторов и алгоритмов. Им нравится сообщать об ошибках, делая исключения.

  • Переносимость между операционными системами.
     
    • На уровне синтаксиса C++ удобно изучать и использовать один интерфейс независимо от операционной системы.
    • На семантическом уровне поведение кода разумно переносимо в операционных системах.
    • Поддержка двух типовых или нативных форматов поддерживает переносимость программ, но все же позволяет общаться с пользователями в системных форматах.
       
  • Обработка ошибок и отчетность с помощью исключений C++ (по умолчанию) или кодов ошибок.
     
    • Исключения C++ являются предпочтительным механизмом сообщения об ошибках для большинства приложений. Исключение включает подробную информацию кода ошибки, важную для диагностики точной причины ошибок файловой системы.
    • Отчетность об ошибках с помощью кода ошибки позволяет пользовательскому коду, который обеспечивает подробное восстановление ошибок, не стать настолько заваленным блоками поиска, чтобы быть неподъемным.
       
  • Подходит для широкого спектра приложений, начиная от простых операций, подобных сценарию, и заканчивая чрезвычайно сложным производственным кодом.
     
    • На простом скриптовом конце спектра цель состоит не в том, чтобы конкурировать с Python, Perl или языками оболочки, а в том, чтобы обеспечить операции файловой системы, когда C++ уже является языком выбора.
    • Более четкий контроль операций и обработки ошибок доступен для поддержки более сложных приложений или других случаев, когда исключения нежелательны.
       

  • Формирует основу дляISO/IEC TS 18822, стандартной библиотеки C++ Filesystem Technical Specification.

Documentation

Учебник- Нежное введение в библиотеку, с примерами программ, предоставленных для экспериментов.

Ссылка- Формальная документация в стиле стандарта C++ для каждого компонента библиотеки.

FAQЧасто задаваемые вопросы.

Руководство по переносимости- Помощь для тех, кто занимается написанием кода для работы на нескольких операционных системах.

Устаревшие черты— выявляет устаревшие признаки и их замену.

Версия 3 Введение- Нацелены на пользователей предыдущего Boost. Версии файловой системы.

Версия 3 Дизайн- Исторический документ с начала процесса проектирования версии 3.

Оригинальный дизайн- Исторический документ с начала процесса проектирования версии 1.

Список дел- Разработка системы Boost.Filesystem в процессе разработки.

Using the library

Повышаю. Файловая система реализована как отдельно скомпилированная библиотека, поэтому вы должны установить двоичные файлы в месте, которое может быть найдено вашим линкером. Если вы будете следовать инструкциямBoost Getting Started, это уже сделано для вас.

Coding guidelines

Для нового кода настоятельно рекомендуется определить<BOOST_FILESYSTEM_NO_DEPRECATED>перед включением заголовков файловой системы. Это предотвращает непреднамеренное использование старых функций, особенно устаревших имен функций, которые были заменены и исчезнут в будущем.

Cautions

После прочтения учебника вы можете погрузиться прямо в простые, похожие на скрипты программы с помощью библиотеки файловой системы! Однако, прежде чем делать какую-либо серьезную работу, есть несколько предостережений:

Effects and Postconditions not guaranteed in the presence of race-conditions

Спецификации функций файловой системы следуют форме стандартной библиотеки C++, определяя поведение с точки зрения эффектов и пост-условий. Еслиусловие расысуществует, пост-условия функции могут перестать быть истинными к тому времени, когда функция возвращается к абоненту.

Объяснение:Состояние файлов и каталогов часто распространяется по всему миру и, таким образом, может быть неожиданно изменено другими потоками, процессами или даже другими компьютерами, имеющими сетевой доступ к файловой системе. В качестве примера трудностей, которые это может вызвать, обратите внимание, что следующие утверждения могут не сработать:

<assert( exists( "foo" ) == exists( "foo" ) );  // (1)

remove_all( "foo" );
assert( !exists( "foo" ) );  // (2)

assert( is_directory( "foo" ) == is_directory( "foo" ) ); // (3)
>

(1) потерпит неудачу, если несуществующий "foo" возникнет или существующий "foo" будет удален, между первым и вторым вызовомсуществует(). Это может произойти, если во время выполнения примерного кода другой поток, процесс или компьютер также выполняет операции в том же каталоге.

(2) не сработает, если между вызовомremove_all()и вызовомсуществуетновый файл или каталог, названный "foo", создан другим потоком, процессом или компьютером.

(3) выйдет из строя, если другой поток, процесс или компьютер удалит существующий файл "foo", а затем создаст каталог под названием "foo", между двумя вызовами примерного кодаis_directory()..

Exceptions

Если не указано иное, функции Boost.Filesystem выбрасываютbasic_filesystem_errorисключения для сообщения о сбоях, таких как ошибки ввода/вывода. Реализации могут также использовать функции стандартной библиотеки C++, которые могут выброситьstd::bad_allocисключения для сообщения об ошибках распределения памяти. Эти исключения могут быть выброшены, даже если условие ошибки, ведущее к исключению, явно не указано в параграфе функции.

Дляоперационных функций, имеющих доступ к внешней файловой системе, предусмотрены номинально небросающие версии, поскольку они часто используются в контекстах, где коды ошибок могут быть предпочтительным способом сообщения об ошибке. Даже номинально не бросающие версии функций будут бросатьstd::bad_allocИсключения для сообщения об ошибках распределения памяти. Однако функции, отмеченные< noexcept>, никогда не бросают исключений.

Headers

Библиотека Boost.Filesystem содержит несколько заголовков:

  • Header<boost/filesystem.hpp>обеспечивает доступ ко всем функциям библиотеки, кроме файловых потоков.
     
  • Header<boost/filesystem/fstream.hpp>наследует те же компоненты, что и C++ Заголовок стандартной библиотекиfstream, но файлы идентифицируются аргументамиconst path&, а не аргументамиconst char*.

Example programs

См., например,учебник.

Implementation

Текущая реализация поддерживает операционные системы, которые обеспечивают POSIX или Windows API.

Библиотека регулярно используется на операционных системах Apple OS X, HP-UX, IBM AIX, Linux, Microsoft Windows, SGI IRIX и Sun Solaris с использованием различных компиляторов. Он также используется несколькими операционными системами смартфонов.

Macros

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

Имя Макро Дефолт Эффект, если он определен
BOOST_FILESYSTEM_NO_DEPRECATED Not defined. Deprecated features are excluded from headers.
BOOST_FILESYSTEM_DYN_LINK Defined if BOOST_ALL_DYN_LINK is defined, otherwise not defined. The Boost.Filesystem library is dynamically linked. If not defined, static linking is assumed.
BOOST_FILESYSTEM_NO_LIB Defined if BOOST_ALL_NO_LIB is defined, otherwise not defined. Boost.Filesystem library does not use the Boost auto-link facility.

Макросы BOOST_POSIX_API и BOOST_WINDOWS_API больше не поддерживаются.

Building the object-library

Объект-библиотека будет построена автоматически, если вы используете систему Boost build.Начало. Он также может быть построен вручную с использованиемJamfile, поставляемого в каталогах libs/filesystem/build, или пользователь может построить проект IDE или создать файл, который включает в себя исходные файлы объектной библиотеки.

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

Объект-библиотека может быть построена для статического или динамического (shared/dll) соединения. Управляется макросами BOOST_ALL_DYN_LINK или BOOST_FILESYSTEM_DYN_LINK. См. страницуОтдельная компиляциядля описания используемых методов.

Note for Cygwin users

Требуется Cygwinверсии 1.7 или более поздней, поскольку поддерживаются только версии GCC с широкими строками символов.

Код реализации библиотеки рассматривает Cygwin как платформу Windows и, таким образом, использует API Windows и использует синтаксис пути Windows в качестве нативного синтаксиса пути.

Version history

Version 4

В стадии разработки- Добавить поддержкуISO C++ Технические характеристики файловой системы. Файловая система TS основана на Boost. Файловая система версии 3, с небольшим количеством изменений. Большинство пользовательских кодов, написанных для версии 3, должны работать без изменений с версией 4.

Version 3

Рост 1.44.0 - июнь. 2010 — Интернационализация через единый класс<path>. Унифицированная обработка ошибок.

Пётр Димов предложил использовать класс «единый путь», а не шаблон класса<basic_path>. Эта идея легла в основу редизайна версии 3.

Спасибо за комментарии от Роберта Стюарта, Зака Лейна, Питера Димова, Грегори Пила, Скотта МакМюррея, Джона Байтвея, Джеффа Флинна, Джеффри Босбума.

Version 2

Повышение 1,34.0 - май, 2007 — Интернационализация по шаблону<basic_path>.

Так много людей внесли комментарии и сообщения об ошибках, что больше невозможно признать их индивидуально. Тем не менее, Питер Димов и Роб Стюарт должны быть особенно благодарны за их конструктивную критику и предложения. Теренс Уилсон и Крис Фрей внес свой вклад в программы синхронизации, которые помогли осветить проблемы производительности.

Version 1

Boost 1.30.0 — март 2003 — Первый официальный релиз Boost.

Библиотека файловых систем была разработана и внедрена Беманом Доусом. Оригинальные классыdirectory_iteratorиfilesystem_errorбыли основаны на предыдущей работе Дитмара Куэля, измененной Яном Лангером. Томас Витт оказал особую помощь на более поздних стадиях первоначального развития. Питер Димов и Роб Стюарт сделали много полезных предложений и комментариев в течение длительного периода времени. Говард Хиннан помогал в вопросах интернационализации.

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

Среди участников были Аарон Брашерс, Алан Беллингхэм, Алекс Беллингхэм, Алекс Беллхэм, Алекс Беллхэм, Алекс Беллхэм, Алекс Беллхэм, Алекс Розенберг, Билл Кемпф, Билл Сеймур, Билл Кемпф, Билл Сеймур, Билл Кемпф, Билл Кемпф, Билл Сеймур, Карл Дэниел, Чак Эллисон, Данл Миллер, Дэнл Нюффер, Дэнл Миллер, Дэнл Абрахамс, Дэвид Фрей, Дарин Адлер, Дэвид Абрахамс, Дэвид Фрейл, Дарин Адлер, Дэвид Абрахамс, Дитмар Кюхл, Дуглас Грегор, Дуглас Грегор, Эрик Грегор, Эрик Вудрафф, Гэри Пауэлл, Дженнаро Прота, Джефф Лейланд, Джованни Симс, Говард Ноулз, Ян Лангер, Ян Лангер, Ян Лангер, Ян Лангер, Ян Лэнгер, Дженс Джонс, Джим Хисло Длительная дискуссия о библиотечном рефлекторе комитета C++ освещала проблему «иллюзии переносимости», особенно в публикациях Пи Джей Плаугера и Пита Беккера.

Уолтер Лэндри оказал большую помощь в освещении случаев использования символических ссылок для версии 1.31.0. 


Пересмотрено25 октября 201525 October, 2015[ORIG_END] -->

© Copyright Beman Dawes, 2002-2005

Использование, модификация и распространение регулируются Лицензией на программное обеспечение Boost версии 1.0. См.www.boost.org/LICENSE_1_0.txt

Статья Filesystem Home раздела может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 18:00:13/0.032478094100952/1