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

0 java byte inputstream file 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()
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

不,这绝对不是这样做的方式:

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

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

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

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

byte[] data = Files.toByteArray(file);
Run Code Online (Sandbox Code Playgroud)

或者如果你已经有了InputStream,请使用ByteStreams:

byte[] data = ByteStreams.toByteArray(inputSTream);
Run Code Online (Sandbox Code Playgroud)

这也适用InputSupplier.