gpt4 book ai didi

java - 读取和写入文件时,输出会发生变化

转载 作者:行者123 更新时间:2023-11-30 02:51:31 25 4
gpt4 key购买 nike

我正在尝试读取一个文件(与扩展名无关)并在此之后写入,但是当我这样做时,输出文件与输入不同。

我的代码是下一个:

OutputStream outputStream = null;
FileReader fr = new FileReader("rute\\inputfile.PNG");
BufferedReader br = new BufferedReader(fr);
String line;
while ((line= br.readLine()) != null) {
content += line;
}

byte[] toBytes= content.getBytes();
InputStream inputStream = new ByteArrayInputStream(toBytes);
try {
outputStream = new FileOutputStream(new File("rute\\output.PNG"));
int read = 0;
byte[] bytes = new byte[1024];

while ((read = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
inputStream.close();

如果你问我为什么转换为字节并从这种形式写入,是因为我需要对数据做一些事情,并且我需要这种转换。如果你告诉我我无法在字符串上加载图像,是的,我可以做类似的事情:

File fil = ~~~~;
FileInputStream fis = null;
fis = new FileInputStream(fil);
byte[] bytess = IOUtils.toByteArray(fis);

但我不想用这种方式来做,因为如果我想加载大文件,堆大小不够,这可以通过“每行”读取来解决。

感谢您的回答

最佳答案

我建议阅读this question前。由于您正在将二进制数据读入字符串,因此您正在更改该数据的编码。所以输出会有所不同。

最好的方法是将二进制文件读取为字节数组。但我将取决于您需要对它们进行哪种类型的转换/版本/更改。

更新

当然,您在写作之前会编辑内容

while ((line= br.readLine()) != null) {
content += line + "\n";
}

所以你的输出文件总是不同的。

更新2

由于问题是如何读取大的二进制文件,google通常是你的 friend 。或者您可以查看其他question

关于java - 读取和写入文件时,输出会发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38501999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com