java中getBytes方法可能使图片文件产生的问题

简介:

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
Java的getbytes()方法使用
1.getBytes()是什么 getBytes() 是Java编程语言中将一个字符串转化为一个字节数组byte[]的方法 2.getBytes() 方法的两种形式: (1)getBytes(String charsetName):使用指定的字符集将字符串编码为byte序列,并将结果存储到一个新的byte数组中。 (2)getBytes():使用平台的默认字符集编码为byte序列,并将结果存储到一个新的byte数组中。
|
编解码 Java
Java IO--字符编码getProperty、getBytes
<h1>编码:</h1> <div>在计算机世界里,任何的文字都是以指定的编码方式存在的,在java程序的开发中最常见的编码为:ISO8859-1、GBK/GB2312、unicode、UTF。<br> </div> <div> <img src="http://img.blog.csdn.net/20131116084005718" alt=""><br> </div> <h1>乱
1226 0
|
1天前
|
Java
【Java多线程】分析线程加锁导致的死锁问题以及解决方案
【Java多线程】分析线程加锁导致的死锁问题以及解决方案
9 1
|
1天前
|
Java 调度
【Java多线程】线程中几个常见的属性以及状态
【Java多线程】线程中几个常见的属性以及状态
7 0
|
1天前
|
Java 调度
【Java多线程】对进程与线程的理解
【Java多线程】对进程与线程的理解
9 1
|
1天前
|
安全 Java 调度
Java多线程编程实践指南
Java多线程编程实践指南
11 0
|
3天前
|
安全 Java 开发者
深入理解Java并发编程:线程安全与性能优化
【5月更文挑战第7天】在Java中,多线程编程是提高应用程序性能和响应能力的关键。本文将深入探讨Java并发编程的核心概念,包括线程安全、同步机制以及性能优化策略。我们将通过实例分析,了解如何避免常见的并发问题,如死锁、竞态条件和资源争用,并学习如何使用Java提供的并发工具来构建高效、可靠的多线程应用。
|
3天前
|
缓存 Java
Java并发编程:深入理解线程池
【5月更文挑战第7天】本文将深入探讨Java并发编程中的重要概念——线程池。我们将了解线程池的基本概念,以及如何使用Java的Executor框架来创建和管理线程池。此外,我们还将讨论线程池的优点和缺点,以及如何选择合适的线程池大小。最后,我们将通过一个示例来演示如何使用线程池来提高程序的性能。
|
4天前
|
安全 Java
Java中的并发编程:理解并发性与线程安全
Java作为一种广泛应用的编程语言,在并发编程方面具有显著的优势和特点。本文将探讨Java中的并发编程概念,重点关注并发性与线程安全,并提供一些实用的技巧和建议,帮助开发人员更好地理解和应用Java中的并发机制。