0

我需要使用 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()
4

2 回答 2

7

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

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

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

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

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

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

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

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

这也适用于InputSupplier.

于 2013-05-15T16:35:40.717 回答
0

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

 byte[] bytes = Files.readAllBytes(Paths.get(path));
于 2013-05-15T16:48:09.667 回答