我需要使用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()
答案 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));