爲什麼您認爲Java語言選擇將文件數據視爲流而不是單個對象?這種方法有什麼好處?爲什麼您認爲Java語言選擇將文件數據視爲流而不是單個對象?
4
A
回答
8
1
答案取決於你如何定義「流」和「單個對象」。
假設隨機訪問是兩者的區別,答案是流的抽象更爲普遍,不僅支持磁盤文件,還支持套接字,管道和其他通信通道。
1
The Unix file System是這個想法的來源。標準輸入,標準輸出和標準錯誤被視爲流:
文件只是一個數據流 - 一個接一個字節,沒有固有內部結構的Unix。程序解釋如何將此流劃分成行或記錄或字段。
按照慣例,處理文本的Unix程序通常會在找到新的行控制字符(八進制代碼012)的地方將字節流分解爲行。這只是一個慣例。它不是由操作系統強加的,並且不同的程序可以使用不同的方式來指示行結束。
1
如果您告訴它Java對象是什麼,Java也可以將輸入流「對待」爲對象。
ObjectInputStream objectInput = new ObjectInputStream(new FileInputStream(filepath));
MyObject myobject = (MyObject) objectInput.readObject();
這裏是關於輸入/輸出流的基礎教程: http://docs.oracle.com/javase/tutorial/essential/io/streams.html
0
流提供更好的abstaction。如果需要,您可以使用數據流將文件數據轉換爲對象,或者如果尚未提供全部數據,則可以繼續讀取數據流。
相關問題
- 1. 爲什麼選擇0,...,而不是SELECT
- 2. 爲什麼UnhandledExceptionEventArgs.ExceptionObject對象而不是Exception?
- 3. 爲什麼最接近的選擇標記返回對象而不是選擇
- 4. 爲什麼很多語言將Exception對象視爲一等公民?
- 5. 爲什麼Powershell認爲我試圖返回一個對象[]而不是DataTable?
- 6. 爲什麼兩個數字對象出現而不是一個?
- 7. 爲什麼使用SharedPreferences.Editor對象修改數據而不是SharedPreferencesInstace.edit()?
- 8. 爲什麼Q_ASSERT而不是斷言
- 9. 將文本選擇更改爲rtl而不是默認ltr
- 10. Java爲什麼默認的java版本是1.7,而不是1.8
- 11. Resque爲什麼選擇Jam over Yaml作爲序列化語言?
- 12. 流MP3瀏覽器,而不是將數據保存爲文件
- 13. 爲什麼雙擊而不是單個?
- 14. L10N:爲什麼應用默認語言
- 15. 爲什麼Math是一個對象而String是一個函數?
- 16. 爲什麼將xts實現爲矩陣而不是數據框?
- 17. 爲什麼Android支持java而不支持其他語言?
- 18. 爲什麼Reflection將這個Main類顯示爲對象而不是Applet?
- 19. 爲什麼VS2012不會爲我創建新的語言文件?
- 20. 爲什麼選擇這個文件?
- 21. Ems轉換爲像素 - 爲什麼選擇62.5%而不是6.25%?
- 22. 爲什麼選擇SimpleModal而不是jQuery UI對話框?
- 23. 爲什麼C++被稱爲面向對象的編程語言?
- 24. 爲什麼java方法與對象而不是類相關?
- 25. 是否有可能將語言查找表視爲值對象
- 26. 爲什麼decimal.Decimal對象不被認爲是合理的?
- 27. wsimport .wsdl:爲什麼生成.class文件而不是.java文件?
- 28. 爲什麼選擇SCOPE_IDENTITY()返回小數而不是整數?
- 29. 爲什麼Visual Studio認爲js文件是一個cs文件?
- 30. 爲什麼.NET是一個框架和Java是一種語言
您能否解釋將文件數據作爲單個對象進行展示會意味着什麼? – 2011-12-16 20:11:15