Bytes() 转化为String,再转存文件.失败.

byte[] bytes = Files.readAllBytes(Paths.get("E:\\111.rar"));

FileOutputStream fileOutputStream = new FileOutputStream(new File("E:\\222.rar"));

String str = new String(bytes);

fileOutputStream.write(string.getBytes(Charset.forName("ISO-8859-1")));

将文件获取字节数组后 转成字符串后,再将这个字符串另写文件失败,文件打不开

控制台能看到是乱码

经过测试是编码问题

fileOutputStream.write(new String(bytes,Charset.forName("ISO-8859-1")).getBytes(Charset.forName("ISO-8859-1"))); //可以解决

这个可以解决指定字符串编码,再输出为指定编码的文件

 

不过有没有其他办法 只操作 str 字符串 ,(因为原生HttpURlConnection 接收响应转成字符串了 ) 

试了几种转码 方式均失败:String string = new String(str.getBytes("UTF-8"), "ISO-8859-1");  //失败

 

请问我该如何修改我的代码?

 

 

用二进制编辑器比如winhex打开看看生成的文件,找找规律
rar文件开头有一个明显的特征就是有!Rar 这几个字。看你生成的文件变成什么了。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^