我想讀取一個大小爲5.5 megabyte
(一個mp3文件)的二進制文件。我嘗試了fileinputstream
但它花了很多嘗試。如果可能的話,我想以最小的浪費時間閱讀文件。如何從二進制文件中讀取數據?
回答
試試這個:
public static void main(String[] args) throws IOException
{
InputStream i = new FileInputStream("a.mp3");
byte[] contents = new byte[i.available()];
i.read(contents);
i.close();
}
基於來自@保羅籃球隊員&麗芙與可用幫助的註釋更可靠的版本的和閱讀的不可靠性。
public static void main(String[] args) throws IOException
{
File f = new File("c:\\msdia80.dll");
InputStream i = new FileInputStream(f);
byte[] contents = new byte[(int) f.length()];
int read;
int pos = 0;
while ((read = i.read(contents, pos, contents.length - pos)) >= 1)
{
pos += read;
}
i.close();
}
謝謝它的工作 – 2011-06-08 10:55:35
這不是安全代碼。 InputStream.available()「返回可以從此輸入流讀取(或跳過)的字節數的估計值,而不會因下一次調用此輸入流的方法而被阻塞。」這不一定與文件的大小相同。 – 2011-06-08 10:56:12
我很好奇最初的方法是怎樣的。 :) – musiKk 2011-06-08 10:56:32
您應該嘗試在FileInputStream周圍使用BufferedInputStream。它會顯着提高性能。
new BufferedInputStream(fileInputStream, 8192 /* default buffer size */);
此外,我建議使用讀取方法,它需要一個字節數組並填充它而不是普通讀取。
默認值爲8192,或許您正在考慮4096. – 2011-06-08 10:58:55
感謝您的提示。我更新了我的答案。 – 2011-06-08 11:40:33
FileUtils中有用於一次讀取文件的實用工具。對於最大100 MB的適度文件,這更簡單高效。
byte[] bytes = FileUtils.readFileToByteArray(file); // handles IOException/close() etc.
- 1. 從文件中讀取二進制數
- 2. 如何從Excel(.xlsb)二進制文件格式讀取數據?
- 3. 使用python從二進制文件中讀取數字數據
- 4. C#從讀取文本文件中讀取二進制文件
- 5. 我如何讀取java中的二進制數據文件
- 6. 如何使用fread從二進制文件中讀取整數?
- 7. 如何讀取二進制文件
- 8. 如何讀取二進制文件?
- 9. 讀取二進制數據
- 10. 如何從haskell中的文件讀取二進制數據的數組?
- 11. 如何從二進制文件讀取C文本文件?
- 12. 從串口讀取二進制數據
- 13. 從二進制文件讀取Scala
- 14. 從URLConnection讀取二進制文件
- 15. 從二進制文件讀取錯誤
- 16. 從二進制文件讀取
- 17. 從GUI讀取二進制文件
- 18. 如何使用dlang讀取二進制文件數據
- 19. 如何使用Tcl_ReadChars從二進制文件讀取浮點數?
- 20. 如何從二進制WebM文件讀取浮點數?
- 21. 如何從二進制文件讀取整數與C + +和C
- 22. 如何從hdfs將二進制文件讀入Spark數據框?
- 23. 潮汐SDK。如何從txt文件中讀取TEXT。不是二進制數據
- 24. 從二進制文件(Java)讀取數據?
- 25. 從numpy二進制文件讀取字符數據
- 26. Python讀取二進制文件中的二進制數據到字符串?
- 27. 如何從xhr響應中讀取二進制數據
- 28. 如何從DataBase中讀取10000+字節的二進制數據[]?
- 29. 如何停止從二進制文件中讀取c
- 30. 如何從AEM中讀取二進制文件?
當然這是可能的。你的具體問題是什麼? 「需要多少次」意味着什麼? – musiKk 2011-06-08 10:48:41
例如,當我想讀取該文件需要5分鐘,這不是很好。我想讀一個更不敏感 – 2011-06-08 10:49:53
這是一個本地文件? – andyb 2011-06-08 10:51:24