听说读取图片时不能直接转换成String,会丢失信息?有具体的解决办法吗?

解决方案 »

  1.   

    干吗要转换成String了
    不都是用的byte位啊!
      

  2.   

    当然不能用string,用byte,就是二进制流
      

  3.   

    while((n=in.read(b))!=-1)
    {
    //s是String
    s = s + new String(b, 0, n);
    }
    用循环读时不转换,放在那?
      

  4.   

    干吗要用字符串呢,如果文件不是很大的话全部读到一个byte数组里再写出来
    大的话用缓冲
    InputStream is = new FileInputStream("xx.xxx");
    FileOutputStream fos = new FileOutputStream(new File("pp.gif"));
    byte[]b=new byte[1024];
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    while(true){
    int bytes = is.read(b);
    if(bytes==-1)
    break;
    baos.write(b,0,bytes);
    } byte[]bb = baos.toByteArray();
    fos.write(bb,0,bb.length);

    fos.close();
    baos.close();
      

  5.   

    已经好了,多谢,请believefym(feng)兄弟去“Web 开发”版块回复,我在那里也开了一个同样的帖子,分全给你!
    如果有时间请解释一下,为什么“baos.write(b,0,bytes);”写到byte[]b中后,“byte[]bb = baos.toByteArray();”是干什么用的?是将缓冲区中的数据写到byte[]bb吗?也就是说byte[]b相当于缓冲区?
      

  6.   

    数组b就是一块缓冲区了,长度为1k,可以自己定义
    bb是存放整个文件数据的
    已经到web块接分