我從網上獲取一些文件,其中許多是二進制文件(可執行文件,PDF等)。在Java中,保存二進制數據直到將其保存在數據庫中的正確類型是什麼?我可以爲此使用字符串嗎?什麼類型是最好管理Java中的二進制數據?
12
A
回答
13
正在使用使用一個字節數組(字節[])或InputStream的(例如ByteArrayInputStream的)。 Java字符串不是通用二進制數據的良好容器。
Apache庫commons-io有一些很好的工具類來處理字節和流。
例如IOUtils.toByteArray(InputStream)
ByteBuffer引入作爲Java NIO部分,在Java 4(1.4)和後可用。在特殊情況下,它可以比使用byte []具有性能優勢。它也有一些有用的便利方法。儘管如此,我仍然通常使用byte [],因爲它更廣爲人知,在API中更常見,並且幾乎總是表現良好。
4
2
使用byte[]
或ByteBuffer
如果你需要簡化的字節級操縱。
嚴格地說你可能使用一個字符串,但有很多與字符編碼相關的缺陷,所以你不應該使用字符串沒有一個很好的理由這樣做。
3
對於少量數據使用byte[]
,但對於二進制文件(要存儲在數據庫BLOB中),您應該使用臨時文件作爲InputStream
。 JavaEE也爲上傳的文件執行此操作。對於字節[],浪費內存對於服務器性能不利。想象一下,一個webapp提供10個PDF文件,每個大約200MB。服務器需要超過2GB的RAM才能用於Web應用程序。
而且使用一個InputStream允許JDBC將數據流的數據庫(對於大多數JDBC驅動程序,而不是MySQL的,這將兩次保存數據在內存中的客戶端和服務器)。
您可能會喜歡PreparedStratement
的Apache Commons FileUpload和setBlob()。
0
不要將文件直接保存到數據庫。將它們保存到文件系統中,並將路徑保存到數據庫中的文件中。這就是文件系統的用途。如果將二進制文件填充到數據庫中,您將會遇到性能問題。
相關問題
- 1. 代表任意二進制數據的好數據類型是什麼?
- 2. 二進制數據是無法管理
- 3. 二進制數據的標準SQL類型是什麼?
- 4. 什麼數據類型適合在ActiveX方法中處理二進制數據?
- 5. 什麼是最好的本地數據庫管理軟件?
- 6. 什麼類型的數據(二進制,十六進制...)在列中格式化?
- 7. 什麼是二進制數據?
- 8. 管理數據,類或數組的最佳方法是什麼?
- 9. 緩存二進制數據的最佳方式是什麼?
- 10. 二進制值的數據類型是什麼?它是字符串數據類型嗎?
- 11. Python中二進制序列類型的用法是什麼?
- 12. hadoop中的二進制類型是什麼?
- 13. 在類之間管理數據的最佳方式是什麼?
- 14. Julia中數據類型的二進制表示原理
- 15. 什麼是在Java中聲明二進制數字的「元」?
- 16. grails中像image這樣的二進制文件的最佳數據類型是什麼?
- 17. 將二進制數據存儲在數字中的最佳方法是什麼?
- 18. 什麼是抽象數據類型?它是Java中的類嗎?
- 19. 二進制樹,其中數據是不同的繼承類型
- 20. 二進制plist的HTTP內容類型是什麼?
- 21. 將二進制,十六進制和八進制轉換爲java數據類型
- 22. 最好的數據類型
- 23. oracle二進制數據類型
- 24. 關於「二進制」數據類型
- 25. 爲什麼typeof十六進制數或二進制數Uint64,而十進制數的類型是Int64?
- 26. 不好操作類型爲二進制運算符 「&」 的Java
- 27. 什麼是最好的方式管理混亂的數據到UITableView的部分?
- 28. 固定寬度二進制數據的理想字段類型
- 29. 什麼是最好的monadic類型來解釋單子類型?
- 30. 管道上游類型參數的真正好處是什麼?