2012-03-07 2 views

答えて

13

に使用されて参照理由であるbyte

byte[] 

の配列。 Java文字列は、汎用バイナリデータのための良いコンテナではありません。

Apacheライブラリcommons-ioには、バイトとストリームを扱うための素晴らしいユーティリティクラスがいくつかあります。

IOUtils.toByteArray(InputStream)


ByteBufferは、Java 4(1.4)以降で利用可能なJava NIOの一部として導入しました。特別なシナリオでは、バイト[]を使用するよりもパフォーマンス上の利点があります。便利な便利な方法もいくつかあります。しかし、私はまだバイト[]を使用しています。なぜなら、それは広く知られており、APIでより一般的であり、ほとんど常に十分に機能しているからです。

4

あなたはバイト配列(byte [])またはのInputStream(例えばするByteArrayInputStream)を使用し、それはFileInputStream

2

単純なバイトレベルの操作が必要な場合は、byte[]またはByteBufferを使用してください。

厳密に言えば、にはという文字列を使用できますが、文字エンコードに関連する落とし穴がたくさんあるので、文字列を使用しないでください。

3

少量のデータを使用する場合はbyte[]を使用しますが、バイナリファイル(データベースBLOBに格納する場合)にはInputStreamという一時ファイルを使用する必要があります。 JavaEEはアップロードされたファイルに対してもこれを行います。サーバーパフォーマンスがbyte []のメモリを浪費するのは良くありません。 PDFファイルを約200MBごとに配信するwebappを想像してみてください。サーバーには、Webアプリケーション用に2GB以上のRAMが必要です。

また、InputStreamを使用すると、JDBCがデータベースにデータをストリーミングできるようになります(MySqlではなく、ほとんどのJDBCドライバで、クライアントとサーバーで2回以上メモリ内のデータを保持します)。

Apache Commons FileUploadsetBlob()PreparedStratementです。

0

ファイルをデータベースに直接保存しないでください。代わりにそれらをファイルシステムに保存し、ファイルのパスをデータベースに保存します。これがファイルシステムの目的です。バイナリファイルをデータベースに格納すると、パフォーマンスの問題が発生します。

関連する問題