我想读取一个大小为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