问题遇到的现象和发生背景
在调用fileInputStream.read方法时,为什么按照byte数组来读取后,图片就无法显示了,只读取一个字节,图片可以正常显示
问题相关代码,请勿粘贴截图
//client
OutputStream outputStream = socket.getOutputStream();
String imagePath ="src\\爆炸.jpg";
FileInputStream fileInputStream = new FileInputStream(imagePath);
byte[] bytes = new byte[1024];
int n = 0;
//读取图片文件,将数据写入到通道
while ((n = fileInputStream.read(bytes)) != -1){
outputStream.write(n);
}
outputStream.flush();
socket.shutdownOutput();//设置置写入结束标记
//server 将接收的图片数据写入到指定路径
InputStream inputStream = socket.getInputStream();
String savePath = "src\\new.jpg";
FileOutputStream fileOutputStream = new FileOutputStream(savePath);
//IO读取,将读取到的图片数据写入到指定路径
byte[] bytes = new byte[1024];//设置缓冲,每次读取的字节数
int n = 0 ;
while ( (n = inputStream.read()) != -1){
fileOutputStream.write(n);
}
fileOutputStream.flush();
运行结果及报错内容
运行无报错
我的解答思路和尝试过的方法
已排除是其他部分的问题,只要read方法读取的是数组,图片传输后就无法显示了