2012-03-07 17 views

cevap

13

kullanılan bkz nedenle byte s

byte[] 

dizisi. Java Dizeleri, genel ikili veriler için iyi bir kap değildir.

Apache kütüphane commons-io bayt ve akışları ile başa çıkmak için bazı güzel yarar sınıfları vardır.

örn. IOUtils.toByteArray(InputStream)


ByteBuffer Java 4 (1.4) ve daha sonra uygun Java NIO bir parçası olarak dahil edilmiştir. Özel senaryolarda, bir bayt [] kullanarak performans avantajları olabilir. Ayrıca bazı yararlı kolaylık yöntemleri vardır. daha yaygın API'lerde, daha yaygın bilinen ve hemen hemen her zaman yeterince iyi performans beri hala genellikle, ama, [] bayt kullanırlar.

4

bir byte dizisini (byte []) ya da inputStream (örneğin ByteArrayInputStream) kullanınız FileInputStream

2

kullanın byte[] veya ByteBuffer Eğer basitleştirilmiş bayt düzeyinde manipülasyon gerekiyorsa.

bir dizgeyi kullanabilir ancak karakter kodlamasıyla ilgili birçok tuzak vardır, bu nedenle dizeleri gerçekten iyi bir neden olmadan kullanamazsınız.

3

Küçük miktarda veri için byte[] kullanın, ancak ikili dosyalar için (veritabanı BLOB'larında depolanacak), InputStream olarak bir geçici dosya kullanmalısınız. JavaEE ayrıca yüklenen dosyalar için bunu yapar. Sunucu performansının bayt [] için belleği boşa harcaması iyi değildir. Her biri yaklaşık 200 MB'lık on PDF dosyası dağıtan bir webapp düşünün. Sunucu sadece webapp için 2GB'den fazla RAM'e ihtiyaç duyacaktır.

Ayrıca, bir InputStream kullanarak JDBC'nin veriyi veri tabanına aktarmasına izin verir (çoğu JDBC sürücüsü için, MySql için değil, bu da verileri istemci ve sunucu için iki kez daha tutacaktır).

Apache Commons FileUpload ve setBlob()'un PreparedStratement ürününe bakabilirsiniz.

0

bir veritabanına doğrudan dosyaları kaydetmek etmeyin. Onları bir dosya sistemine kaydedin ve veritabanındaki dosyaya yolu kaydedin. Dosya sistemleri bunun için var. Veritabanınıza ikili dosyaları yüklerseniz performans sorunları alırsınız.

İlgili konular