2

私は約 14 年間 Java のオンとオフを行ってきましたが、過去 6 年間はほとんど何もしていませんでした。

私は本当に java.io パッケージが嫌いです -- サブクラスとアダプタの軍団です。私常に「errno」などをポーリングするよりも例外が好きですが、宣言された例外がなくても確実に生活できます。

C の Unix/ANSI stdio.h ルーチンのように機能するものはありますか?

Java 自体が廃止されるまで、java.io とその規則を取り除くことは決してないことを私は知っています。そうは言っても、次のように機能するものが欲しいです(パッケージjavax.stdioと呼びましょう):

fopen() および popen() を模倣するコンストラクターを使用して、テキストまたはバイナリーのファイル (またはパイプ) をシーケンシャルまたはランダムに読み書きできるメインのユーティリティ クラス (おそらく FileStar) を用意します。

このクラスには、fread()、fwrite()、fgets()、fputs()、fseek() など (fprintf()?) などを実行する便利なメソッドが多数含まれている必要があります。オープン/コンストラクト モードと互換性のないメソッドは、単純にスローされます (制限されているときに一部のコレクション クラス/メソッドが行うのと同じように)。

次に、作成したストリームをどのように使用するかを示す一連のインターフェイスを用意します: Sequential、RandomAccess、ReadOnly、WriteOnly、Text、Binary、およびこれらの適切な組み合わせ。おそらく、適切な型キャスト (インターフェース) を返すメソッドがあり、互換性のないものを要求した場合はスローされます。

追加のフレーバーについては、宣言された例外をスキップします。たとえば、javax.stdio.IOException extends RuntimeException です。

このようなオープンソース プロジェクトはありますか?

4

3 に答える 3

4

Java IOライブラリは最高ではありませんが、基本的にはそれを使用する必要があります。CのCのようなコード。JavaのJavaのようなコード。Java IOクラスは、少し冗長ではないにしても、かなり単純です。

あるいは、Java NIOパッケージを使用することもできますが、それらはより特殊なユースケースを持つ傾向があります。

于 2010-05-13T01:54:02.890 に答える
1

java.nioおよびjava.nio.file(Java 7の場合)パッケージを調査しましたか?

于 2010-05-13T02:11:03.297 に答える
0

私の知る限り、Java用のstdioのようなものはありません。そして、それが純粋なJavaで実装可能になるとは思いません。

実際、Cのバックグラウンドを持つほとんどの経験豊富なJava開発者は、Java I/OがCstdioよりも大幅に改善されていると考えていることがわかると思います。特に今、Javaにはprintfとscanfのアナログがあります。

于 2010-05-13T01:55:00.483 に答える