2011-01-24 9 views
6

私はその場でリソースと多くのことを実行する必要があります。瓶のANS戦争にそれらをパッケージ化し、Javaクラスを構築し、コンパイル、XSD/XMLドキュメントを解析し、DBに固執する、OSGiのようにそれらを配置するなどJavaのメモリ内ファイル構造ですか?

私が使っているほとんどのライブラリ/ APIは、これらの中間タスクをすべてメモリ上で実行することを許していますが、java.io.Fileでしか動作しない特別なライブラリがあります。そして、Java EE環境ではうまくいかない、実際の一時ファイルやディレクトリを使用して私に残ることはありません。

ノードがjava.io.File(私が見ているように)まで拡張されたメモリ内ファイル構造のライブラリ/ソリューションが必要であると思います。既知/類似のライブラリへのリンクをクリックしてください。コメントは大歓迎です。

ありがとうございます!

+0

私はこれが多かれ少なかれ同じ質問であると信じています。http://stackoverflow.com/questions/578305/create-a-java-file-object-or-equivalent-using-a-byte-array-in-メモリなし - –

+0

@Chris Thompson、私は投稿する前にそれを読んだ。これは本当に同じimhoではありません。 – Osw

+0

フェア十分に、私は確かに物事の側面を見ることができます。いずれにせよ、あなたの質問は良いことであり、これを達成するための何かがなければ私はショックを受けるでしょう... –

答えて

6

私はあなたが探しているものを見つけるとは思わない。 java.io.File APIは、さまざまな方法で実装できるファイルシステム抽象化を提供する意図で書かれていませんでした。一部のFS操作(deleteやmkdirなど)ではメソッドを公開していますが、基本的な読み書きI/Oは処理しません。それはFileInputStreamのような他のクラスに委ねられています。つまり、APIの観点から見ると、Fileオブジェクトはパスだけではありません。何も抽象化されていません。あなたは立ち往生しています。

+0

良いショット。 java.io.Fileが基本I/Oを実行しないことは確かですか?しかし、私はチャンスがありません。( – Osw

+0

javadocはこちらです:http://download.oracle.com/javase/1.4.2/docs/api/java/io/File.html FileクラスがI/Oオペレーションでは、getInputStream()、getOutputStream()などのメソッドが表示されることが予想されますが、もちろんそこにはありません。Javaの導入以来、さまざまな方法で実装できる真のファイルシステムAPIを書いた人もいますが、それはあなたのユースケースには役立ちません。 –

+0

FileとFileInputStreamソースを調べました。あなたは正しい、私は立ち往生している。 – Osw

4

1つのオプションは、RAM diskを使用することです。あなたのプログラムはjava.io.Fileでディスクを使用すると考えますが、実際にはメインメモリを使用しています。

+0

+1既存のツーリングを指摘する。しかし、これは必ずしも "Java EE"環境に必ずしも "うまく収まる"とは限りません。それは何でも: –

+0

@pst、なぜ "Java EE"環境に "うまく収まらない"のでしょうか?ホストシステムが提供する余分なFSです。とにかく彼はファイルを読み書きするためにいくつかの道を使わなければなりません。それはメモリ上のFS上にあってもよい。 – Jay

+0

@Jay、アイデアありがとう、しかし、私はソフトウェア抽象化レイヤーについて考えていたのですが、ハードウェア/システムの問題です。 – Osw

0

利用できる素晴らしい選択肢があります:https://github.com/google/jimfs

これは、メモリファイルシステムの取り扱いでJavaを(7+)をサポートし、あまりにも非常に使いやすいですが。

関連する問題