我想读取一个大小为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. C#从读取文本文件中读取二进制文件
- 2. 如何从haskell中的文件读取二进制数据的数组?
- 3. 如何从二进制文件读取C文本文件?
- 4. 从串口读取二进制数据
- 5. 从URLConnection读取二进制文件
- 6. 从GUI读取二进制文件
- 7. 从二进制文件读取Scala
- 8. 如何使用dlang读取二进制文件数据
- 9. 如何从二进制WebM文件读取浮点数?
- 10. 从二进制文件(Java)读取数据?
- 11. Python读取二进制文件中的二进制数据到字符串?
- 12. 如何从xhr响应中读取二进制数据
- 13. 从文本文件中读取数据并写入二进制文件
- 14. 如何停止从二进制文件中读取c
- 15. 如何正确地从二进制文件读取数据到字符数组
- 16. 从Python中的二进制文件中读取整数
- 17. EOFException从二进制文件,学生数据库中读取UTF文件
- 18. 在elisp中读取二进制数据
- 19. 读取node.js中的二进制数据
- 20. 如何在二进制文件中读取整数和日期
- 21. 在MatLab中读取二进制文件
- 22. java如何从二进制数据获取文件名?
- 23. 从二进制文件中读取巨型int数组
- 24. 如何从二进制blob读取图像元数据?
- 25. 如何从WCF REST读取二进制数据/图像
- 26. 如何从hdfs读取二进制文件?
- 27. 如何从/向二进制文件读取/写入std :: string值
- 28. 如何在lua中打印从二进制文件中读取的数字?
- 29. 如何读取文本文件中的二进制字段
- 30. 从二进制文件写入和读取整数数组
当然这是可能的。你的具体问题是什么? “需要多少次”意味着什么? – musiKk 2011-06-08 10:48:41
例如,当我想读取该文件需要5分钟,这不是很好。我想读一个更不敏感 – 2011-06-08 10:49:53
这是一个本地文件? – andyb 2011-06-08 10:51:24