Существует ли библиотека / пакет java, аналогичная <stdio.h>? - PullRequest
2 голосов
/ 13 мая 2010

Я включаю и выключаю Java около 14 лет, и почти ничего за последние 6 лет или около того.

Я действительно ненавижу пакет java.io - его легион подклассов и адаптеров. Я делаю подобные исключения, вместо того, чтобы всегда опрашивать "errno" и т.п., но я, безусловно, мог бы жить без объявленных исключений.

Есть ли что-нибудь, что работает как подпрограммы Unix / ANSI stdio.h в C?

Я знаю, что мы никогда не избавимся от java.io и его соглашений до тех пор, пока сама java не будет удалена, так как они метастазировали во многих структурах, которые аккрецировались в java. Тем не менее, я хотел бы, чтобы что-то вроде этого работало (назовем это package javax.stdio):

Имейте основной служебный класс, возможно, FileStar, который может читать и записывать файлы (или каналы), как текстовые, так и двоичные, с последовательным или произвольным доступом, с конструкторами, имитирующими fopen () и popen ().

Этот класс должен иметь множество полезных методов, которые выполняют такие функции, как fread (), fwrite (), fgets (), fputs (), fseek () и все остальное (fprintf ()?). Методы, которые несовместимы с режимом открытия / конструирования, просто выдают (как некоторые классы / методы коллекций, когда они ограничены).

Затем, есть несколько интерфейсов, которые предлагают, как вы собираетесь использовать поток после того, как вы его создали: Sequential, RandomAccess, ReadOnly, WriteOnly, Text, Binary, а также их комбинации, которые имеют смысл. Возможно, даже есть методы для возврата соответствующего приведения типа (интерфейса), который вырвется, если вы попросили что-нибудь несовместимое.

Для дополнительного вкуса пропустите заявленные исключения - например, - javax.stdio.IOException расширяет RuntimeException.

Есть ли такой проект с открытым исходным кодом?

Ответы [ 3 ]

4 голосов
/ 13 мая 2010

Библиотека Java IO не самая лучшая, но вы должны в основном жить с ней. Код, как C в C. Код, как Java в Java. Классы Java IO довольно просты, если не сказать многословны.

В качестве альтернативы вы можете использовать пакеты Java NIO, но они, как правило, имеют более специализированные варианты использования.

1 голос
/ 13 мая 2010

Вы исследовали пакеты java.nio и java.nio.file (в Java 7)?

0 голосов
/ 13 мая 2010

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

На самом деле, я думаю, вы обнаружите, что большинство опытных разработчиков Java с фоном C считают, что ввод-вывод Java является огромным улучшением по сравнению с C stdio. Особенно сейчас, когда у Java есть аналоги для printf и scanf.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...