Web'den bazı belgeler alıyorum ve bunların çoğu (vb yürütülebilir, PDF,) ikili dosyalardır. Java'da, veritabanına kaydedilene kadar ikili verileri tutmak için doğru tip nedir? Bunun için bir String kullanabilir miyim?Java ikili verileri yönetmek için en iyisi?
cevap
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.
bir byte dizisini (byte []) ya da inputStream (örneğin ByteArrayInputStream) kullanınız FileInputStream
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.
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.
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.
- 1. JAVA PHP vs Restful webservice Restful webservice. En iyisi?
- 2. Uygulama bağımlılıklarını yönetmek için araçlar/en iyi uygulamalar?
- 3. Regex vs Tryparse performansta en iyisi ne
- 4. LINQ Gruplandırma Verileri İkili
- 5. Mac için İkili Java 7
- 6. İkili Arama Ağacında verileri güncelleştirme
- 7. Güncelleme: Zend Framework'de statik içeriği yönetmek için en iyi yöntemler?
- 8. İkili dizi için veri türleri için düzeltme verileri türleri
- 9. İki nokta arasındaki mesafeyi hesaplamak en iyisi hangisi?
- 10. JAVA: ikili ağaçlar
- 11. Özyineleme veya yineleme belirli bir program için en iyisi olup olmadığını nasıl kontrol edebilirim?
- 12. En İyi UTF-8 verileri için yazın?
- 13. Bir Java uygulamasında verileri kaydetmenin en iyi yolu?
- 14. mysqldump, ikili verileri güvenilir şekilde yönetir mi?
- 15. HTML5 Canvas'dan ikili (base64) verileri alma (readAsBinaryString)
- 16. Java NIO kanal verileri doğru
- 17. Metni java ikili dosyasına dönüştürme
- 18. Java InputStream verileri bekletir.
- 19. Angularjs: Kullanıcı ilerlemesini yönetmek için JSON'u iyileştirme
- 20. Linq Herhangi() bu koleksiyonu bulmak için en iyisi bir koleksiyonları Linq kullanarak MoveNext()
- 21. Nasıl IIS C# den yönetmek için?
- 22. İkili bir operatör için en iyi ad alanı nedir?
- 23. İkili verileri (resimler, pdf'ler, mp3'ler, videolar vb) mysql'de saklamanın en iyi yolu nedir ve neden?
- 24. Basit haskell string yönetmek
- 25. görüntü ve meta verileri java
- 26. Modül dosya benim bağımlılıkları yönetmek için Carthage kullanma derleyici
- 27. Emacs için en iyi java araçları
- 28. java için en iyi html ayrıştırıcısı nedir?
- 29. http bağlantıları için en iyi java lib?
- 30. İkili bir dosyadaki verileri bir alanda farklı dosya türlerine sahip bir diziye nasıl okurum? Java