Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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_Android_Readfile - Fatal编程技术网

Java 读取文件到字节数组时的冗余字节

Java 读取文件到字节数组时的冗余字节,java,android,readfile,Java,Android,Readfile,下面是我在android应用程序中使用的一些读取文件到字节数组的方法 M1: 私有静态字节[]readFileAsBytes(字符串文件路径) 抛出java.io.IOException{ FileInputStream fisTargetFile=新FileInputStream(新文件(文件路径)); 字符串targetFileStr=IOUtils.toString(fisTargetFile,“UTF-8”); 字节[]inputData=IOUtils.toByteArray(新的

下面是我在android应用程序中使用的一些读取文件到字节数组的方法

  • M1:
私有静态字节[]readFileAsBytes(字符串文件路径)
抛出java.io.IOException{
FileInputStream fisTargetFile=新FileInputStream(新文件(文件路径));
字符串targetFileStr=IOUtils.toString(fisTargetFile,“UTF-8”);
字节[]inputData=IOUtils.toByteArray(新的StringReader(targetFileStr),“UTF-8”);
返回输入数据;
}
  • 平方米
私有静态字节[]readFileAsBytes(字符串文件路径)
抛出java.io.IOException{
文件文件=新文件(文件路径);
FileInputStream inputFile=新的FileInputStream(文件);
字节输入数据[]=新字节[(int)file.length()];
读取(inputData);
inputFile.close();
返回输入数据;
}
我也用这个方法

但是,在调试时,我会检测一些冗余字节,例如:

文件文本:ABCDEF

调试时:
-在M1中:
inputData:{-17,-69,-65,65,66,67,68,69,70}

我知道A->65,B->66,。。。但是为什么出现
{-17,-69,-65}

-在M2中:出现比M1多的冗余

我已经搜索过了,但没有找到相同的问题

对我有什么建议吗

谢谢

 String targetFileStr = IOUtils.toString(fisTargetFile, "UTF-8");
 byte[] inputData =  IOUtils.toByteArray(new StringReader(targetFileStr),"UTF-8");
不要使用中间字符串或StringReader将文件的字节放入字节数组中

例如,您不能将jpg文件放入字符串中,因为它不是文本

将字节直接放入字节数组中,就像在第二个readFileAsBytes()中一样。这个应该有用。但是您必须检查inputFile.read(inputData)的返回值;最终形成一个循环

三个前导字节是BOM表。字节顺序标记。见:


两个代码段都错误。请使用十六进制表示法表示字节值。小数点不可读。
文件文本:ABCDEF
。您是从哪个程序/应用程序生成该文件的?文件的大小是多少?6号还是9号?我相信你有9个价值观。但是ABCDEF只有6个字符。最有可能的前三个值是BOM表。字节顺序标记。
-在M2中:显示比M1多的冗余。
???你想说什么?我一个字也听不懂。请在使用M2时发布这些值。@greenapps,我制作了一个应用程序来加密/解密密钥为128位的文件。上面的例子很简短。实际文本键有16个字符,,。。。所以,加上前三个值,就不是128位了。我将阅读有关BOM的内容,谢谢您的回答。第二个不保证工作(尽管它通常会),因为read调用不需要读取完整数组或完整文件。
 The UTF-8 representation of the BOM is the byte sequence 0xEF,0xBB,0xBF