Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这是正确的吗?如何从文件中加载字节?_Java_File_Byte_Inputstream_Bufferedreader - Fatal编程技术网

Java 这是正确的吗?如何从文件中加载字节?

Java 这是正确的吗?如何从文件中加载字节?,java,file,byte,inputstream,bufferedreader,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){ c

我需要使用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()
不,绝对不是这样做的:

  • 当您从文件中读取字节时,您正在将字节转换为文本
  • 您正在删除所有换行符(它们不是从
    readLine
    返回的)
  • 您正在将文本转换回字节
这样很可能会丢失数据

要加载字节,您根本不应该使用
读取器
——只需使用
InputStream
。理解二进制数据和文本数据是不同的,这一点非常重要。把他们中的任何一个当作另一个是一个非常糟糕的主意

如果您只想从我个人使用的文件及其类中读取所有数据:

或者,如果您已经有一个
输入流
,请使用:


这也适用于。

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

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

我发现这个
RandomAccessFile f=newrandomAccessFile(文件,“r”);字节[]cle=新字节[(int)f.length()];f.read(cle)可以吗?我找到了这个
RandomAccessFile f=新的RandomAccessFile(文件,“r”);字节[]cle=新字节[(int)f.length()];f、 阅读(cle)还好吗?不太好。f、 读取(cle)返回它读取的实际字节数。你应该一直读到它返回-1。
byte[] data = ByteStreams.toByteArray(inputSTream);
 byte[] bytes = Files.readAllBytes(Paths.get(path));