我有程序,我必须加载PNG作为字符串,然后再次保存,但在我保存后,它变得不可读.如果我在编辑器中打开加载的PNG和保存的字符串,我可以看到java在整个文件中创建了换行符.如果这是问题所在,我该如何避免这种情况?
public static void main(String[] args)
{
try
{
File file1 = new File("C://andim//testFile.png");
StringBuffer content = new StringBuffer();
BufferedReader reader = null;
reader = new BufferedReader(new FileReader(file1));
String s = null;
while ((s = reader.readLine()) != null)
{
content.append(s).append(System.getProperty("line.separator"));
}
reader.close();
String loaded=content.toString();
File file2=new File("C://andim//testString.png");
FileWriter filewriter = new FileWriter(file2);
filewriter.write(loaded);
filewriter.flush();
filewriter.close();
}
catch(Exception exception)
{
exception.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
我有程序,我必须加载PNG作为字符串,然后再次保存,但在我保存后,它变得不可读.
是的,我并不感到惊讶.您将任意二进制数据视为文本数据(无论您的平台默认编码是什么,都要引导).不是.不要那样做.在某些编码中你可能会使用它 - 直到你开始尝试将字符串传递到别处以剥离不可打印的字符等方式.
如果必须将任意二进制数据转换为文本,请使用base64或hex.如果可能,请尽量避免转换为文本.如果您只想复制文件,请使用InputStream和OutputStream- 而不是 Reader和Writer.
这是一个很重要的一点:只要你可能,就将数据保持在"原生"表示中.只有在必要时才将数据转换为不同的表示形式,并且要非常小心.
| 归档时间: |
|
| 查看次数: |
549 次 |
| 最近记录: |