(新葡京娱乐场) 字节流转成字符串之后,在通过字符串转成字节流后的文件为什么会不一样?
澳门新葡京官网
澳门新葡京官网
当前位置 : 澳门新葡京官网 > 新葡京娱乐场

(新葡京娱乐场) 字节流转成字符串之后,在通过字符串转成字节流后的文件为什么会不一样?

 public static void mainString[] args throws Exception {
        File sourceFile = new File"/home/joy/图片/img1-lg.jpg";
        File tempFile = new File"/home/joy/桌面/TempFile";
        saveTempFilesourceFile, tempFile;
        String str = byteToStringtempFile;
        File saveFile = new File"/home/joy/桌面/saveFile.jpg";
        StringTobytestr,saveFile;
    }

    // 保存临时文件
    public static void saveTempFileFile sourceFile, File tempFile throws Exception {
        FileInputStream inputStream = new FileInputStreamsourceFile;
        FileOutputStream fileOutputStream = new FileOutputStreamtempFile;
        byte[] buf = new byte[10 * 1024];
        int readLeng = 0;
        while readLeng = inputStream.readbuf != -1 {
            fileOutputStream.writebuf, 0, readLeng;
            fileOutputStream.flush;
        }
        fileOutputStream.close;
        inputStream.close;
    }

    // 文件字节转字符串
    public static String byteToStringFile file throws Exception {
        StringBuilder returnDatas = new StringBuilder;
        FileInputStream fileInputStream = new FileInputStreamfile;
        byte[] buf = new byte[10 * 1024];
        int readLenth = 0;
        while readLenth = fileInputStream.readbuf != -1 {
            returnDatas.appendnew Stringbuf,0,readLenth;
        }
        fileInputStream.close;
        return returnDatas.toString;
    }

    // 字符串转文件
    public static void StringTobyteString str,File file throws Exception {
        FileOutputStream fileOutputStream = new FileOutputStreamfile;
        fileOutputStream.writestr.getBytes;
        fileOutputStream.close;
    }
    
    

代码大意:把一张图片通过字节流转成一个字符串,然后在获取该字符串的字节后还原为文件。
理解中,字符只是多带一层编码,还原成字节后应该还是能获取到源文件的呀。

        while readLenth = fileInputStream.readbuf != -1 {
            returnDatas.appendnew Stringbuf,0,readLenth;
        }

二进制图片文件read出来的不是合法的字符串,其中无法解析的二进制数据会被滤掉
参考 javadoc 中的描述:

This method always replaces malformed-input and unmappable-character sequences with this charsets default replacement string.

编码和解码不一定是无损的。你从一个图片文件读出一个能无损编解码的字节流的可能性非常小。

new String new byte[] { 0xff } .getBytes
=>  [-17, -65, -67]

首先保证序列化,你可以用base64,才能保证转回来没问题

栏目列表

广告位

澳门新葡京官网