java中getBytes方法可能使图片文件产生的问题
2014-09-22 19:23
344 查看
InputStream is = new FileInputStream(fl); ImageInputStream iis = ImageIO.createImageInputStream(is); Iterator<ImageReader> itImage = ImageIO.getImageReaders(iis); if(itImage.hasNext()){ ImageReader reader = itImage.next(); byte[] imageByte = new byte[1024*64]; int len = iis.read(imageByte); if(len > 64 * 1000){ JOptionPane.showMessageDialog(new Frame(), "图片过大!请采用文件传输!"); return ; } DatagramPacket dp = null; dp = new DatagramPacket("PICUTER".getBytes(), "PICUTER".getBytes().length, InetAddress.getLocalHost(), 10000); ds.send(dp); dp = new DatagramPacket(imageByte, len, InetAddress.getLocalHost(), 10000); ds.send(dp); synchronized(QQ.class){ byte[] name = new String(dp.getAddress().getHostName() + " : ").getBytes(); QQ.setTextPane(taReceive, name, name.length, QQ.PARAGRAPH); QQ.setTextPane(taReceive, imageByte, len, QQ.PICUTER); //QQ.setTextPane(taReceive, new String(imageByte, 0, len).getBytes(), QQ.PICUTER);//这样写得到的byte的长度会减小 //QQ.setTextPane(taReceive, new String(dp.getData(), 0, dp.getLength()).getBytes, QQ.PICUTER);//这样写得到的byte的长度会减小
} 在java API中看到 getBytes()方法使用平台默认的字符集将此 String 解码为字节序列,并将结果存储到一个新的字节数组中。 我们将图片文件存储在了byte数组里面, 用它形成一个String,用这个String在得到一个新的byte数组,就会发生变化,导致图片文件损坏!
相关文章推荐
- java生成可执行文件方法及关于图片正确显示的问题
- 关于提交文件和提交图片时可能引发的安全问题和解决方法
- JSP上传图片产生 java.io.IOException: Stream closed异常解决方法
- 关于在Java中使用request.getRequestDispatcher(".....")引起的css文件无效或图片无效问题。
- Ubuntu/Debian下JAVA 中文/图片中文字体乱码显示问题解决方法
- Ubuntu/Debian下JAVA 中文/图片中文字体乱码显示问题解决方法
- java程序打包成jar,图片文件问题
- java下载远程http地址的图片文件到本地-自动处理图片是否经过服务器gzip压缩的问题
- 哪些年遇到过的Andriod问题(9)R.java文件不能自动生成解决方法
- 在Java中判断一个文件是否是图片和其类型的方法
- javabean操作文件正确,但是Jsp调用javabean时文件路径出错问题解决之JavaBean访问本地文件实现路径无关实现方法
- 关于cdo的方法生成mht文件后,图片没有固化的问题???
- 深入体验JavaWeb开发内幕——图片、声音等文件的下载源码及可能出现的问题
- 使用ld的“-Ttext”选项时可能产生的一个问题的解决方法
- 路劲方法访问图片或文件的java代码
- java中读取excel文件中字符串乱码问题解决方法
- java 在本地文件中加载图片的问题
- 数据库中导出CSV文件与EXCEL文件数据对比可能遇到的问题与解决方法
- C# 加载图片image --(C#)Image.FromFile 方法会锁住文件的原因及可能的解决方法