FileInputStream fis = new FileInputStream(file);
byte[] bytes = new byte[1024 * 2];
int id = fis.read(bytes);
你以为接下来
String str=new String(bytes);
syso....................
这样只会导致重复元素,因为最后一个数组存了少部分读出来的元素,后面没有元素了,数组后部分的元素始终没有被替换掉,因此和前面重复了
解决办法 String str = new String(bytes,0,id); id是此次读取数组的字节数 这样构建响应的偏移量,只输出该输出的就行了
在文件复制的时候还有这个问题,多余拷贝了很多东西。因为读的多了嘛,考的自然也多。
用FileOutputStream write方法,传入偏移量即可
fos.write(bytes, 0, id);