2016-03-03 78 views
-1

我正在写一个简单的帮助类,它从文件中获取数据,编辑它然后将其写回为字节数组。 我遇到的问题发生在写入文件时,它以某种方式损坏数据,导致我的文件变得无法使用。为什么我的输出文件与原始文件不同?

这里是我的代码片段:

FileOutputStream bytewriter = new FileOutputStream(output_file_name); 

byte[] bytedata = Files.readAllBytes(Paths.get("myPath")); 

byte[] result = edited_data.getBytes(); 

bytewriter.write(result); 

bytewriter.close(); 

即使我只是写的原始数据,而无需编辑回来,输出文件的不同之处一个十六进制值,以便使用该文件的程序认为它破坏(我正在使用一个简单的十六进制编辑器来检查差异)。

有没有更简单/更好的方法来做我想做的事情而不会破坏文件?为什么腐败甚至发生?我尝试了几乎每种可能的写入/读取文件的组合,每次都会发生。

对不起,长期的问题和拼写错误,任何意见/帮助表示赞赏。祝你有个美好的一天:D

+1

它是什么类型的文件?这是一个图像或PDF文件?你应该使用'Binary'模式还是'Text'模式? – user2004685

+1

你是否应该包含一个编码? –

+0

你是如何从'bytedata'到'edited_data'的? –

回答

0

谢谢你们的帮助,我终于解决了这个问题。问题是我在写入数据之前没有指定任何编码。下面的这一行解决了这个问题:

byte result[] = edited_data.getBytes(StandardCharsets.ISO_8859_1); 

输出不再损坏,一切都按我的意图工作。 :D

+0

您从未在您的问题中提及过“edited_data”是什么以及您是如何创建它的,您没有回复@ Ulrich关于它的问题。换句话说,你发布了一个问题,只有你可以解决,因为你没有提到对解决问题至关重要的信息。 –

相关问题