它是否正确 ?如何从文件加载字节?

时间:2013-05-15 16:33:18

标签: java file byte inputstream bufferedreader

我需要使用Java从文件加载字节。这是对的吗?

InputStream ips=new FileInputStream(file); 
InputStreamReader ipsr=new InputStreamReader(ips);
BufferedReader br=new BufferedReader(ipsr);                 
String line;
String cle = "" ;
while ((line=br.readLine())!=null){
   cle+=line
}
---> cle.getBytes()

2 个答案:

答案 0 :(得分:7)

不,这绝对不是 的方式:

  • 您在从文件中读取字节时将字节转换为文本
  • 您正在删除所有换行符(它们不会从readLine返回)
  • 您正在将文本转换回字节

你很可能会以这种方式丢失数据。

要加载字节,您根本不应该使用Reader - 只需使用InputStream即可。理解二进制数据和文本数据不一样非常重要。将他们中的任何一个视为另一个是一个非常糟糕的主意。

如果您只想阅读文件中的所有数据,我会亲自使用Guava及其Files类:

byte[] data = Files.toByteArray(file);

或者如果您已经有InputStream,请使用ByteStreams

byte[] data = ByteStreams.toByteArray(inputSTream);

这也适用于InputSupplier

答案 1 :(得分:0)

我会使用java.nio.file.Files.readAllBytes

 byte[] bytes = Files.readAllBytes(Paths.get(path));