Существует одно серьезное основание не использовать их: , Если Вы не понимаете их роли или как использовать их.
В неправильных ситуациях, ограничения внешнего ключа могут привести к репликации водопада несчастных случаев. Если кто-то удаляет неправильную запись, отменение ее может стать гигантской задачей.
кроме того, с другой стороны, когда необходимо удалить что-то, если плохо разработано, ограничения могут вызвать все виды блокировок, которые предотвращают Вас.
Насколько мне известно, нет встроенного способа сделать это непосредственно на битовом уровне. Есть способы чтения / записи побайтно с использованием встроенных потоков. Вы можете написать оболочку для потока, которая будет выглядеть так, как будто он читает и записывает биты.
Если вам нужно что-то, что уже написано, ищите проекты с открытым исходным кодом, которые выполняют определенные виды кодирования аудио или видео, поскольку есть такие вещи . Например, у кодека FLAC был BitInputStream, который мог удовлетворить ваши потребности.
Мне очень понравилась библиотека colt от CERN. Не могу вспомнить, поддерживает ли он файловый ввод-вывод, но я использовал его для чтения битовых потоков, их анализа и изменения и записи обратно в файлы.
Preon может быть тем, что вы ищете. Глядя на ваши вопросы, я могу представить, что Преон может быть даже больше , чем то, что вы ищете.
Думайте о Преоне как о библиотеке, которая предоставляет в битовом потоке закодированное содержимое того, что Hibernate стремится к реляционным базам данных, и JAXB к XML. Теперь она существует из нескольких модулей. Один из этих модулей является преон-связывающим. Это собственно фреймворк для привязки данных. (Управляется аннотациями.)
Однако прео-связка построена поверх прео-нового битбуфера (в более поздних воплощениях переименованного в прео-новый). Эта библиотека имеет тип абстракции BitBuffer для доступа к сжатым данным битового потока.
alt text http://preon.flotsam.nl/images/layers.png
В преон-релизе прошлого лета пока нет поддержки кодирования. Работа над этим продолжается.