如何使用java将巨大的字符串写入文件

如何使用java将巨大的字符串写入文件,java,Java,所以基本上我有: FileOutputStream fos = new FileOutputStream(dir + "/" + name); fos.write(bImg); fos.close(); 现在这里有时bImg可能包含超过5MB的内容,我碰巧遇到了性能问题。因此,我可能需要将字符串的一部分对一部分写入文件。比如先向文件中写入5000个字符,然后再写入下一个5000个字符等等。但我真的不知道该怎么做 尝试: String file = dir + "/" + name; FileO

所以基本上我有:

FileOutputStream fos = new FileOutputStream(dir + "/" + name);
fos.write(bImg);
fos.close();
现在这里有时
bImg
可能包含超过
5MB的内容,我碰巧遇到了性能问题。因此,我可能需要将字符串的一部分对一部分写入文件。比如先向文件中写入5000个字符,然后再写入下一个5000个字符等等。但我真的不知道该怎么做

尝试:

String file = dir + "/" + name;
FileOutputStream fos = new FileOutputStream(new File(file));
BufferedOutputStream buffOut=new BufferedOutputStream(fos);

buffOut.write(bImg); 

buffOut.flush();
buffOut.close();

但是仍然存在同样的问题,这是不可能的

您需要将输出字符串包装到BufferedOutputStream中。它将为您处理以块的形式写入数据。完成后,请记住刷新BufferedOutputStream,以便所有数据都会出现在文件中。

可能的重复项可以使用重载的
write()
方法,如Is
bImg
Is string?名字让我觉得它像一个字节数组。如果它确实是一个字符串,则应该使用
编写器
,而不是
输出流
——在一个块中写入5 Mb字节数组不应导致性能问题。把它分成几个部分写会比这慢。如果您有性能问题,可能是在上游生成
bImg
值。它不是write to file语句。不,它是
byte[]
,实际上我使用ajax从客户端发送字节,然后在我的服务器中以字符串形式接收数据,将其转换为字节并写入文件,但服务器的速度太慢了。如果是字节数组,为什么要以“字符串”形式接收?字节数组不是字符串,将其视为字符串很可能会损坏数据。在5 Mb单次
write()
写入前后添加缓冲区不会提高性能。在执行多个小写入时,而不是在一个大写入发生时,缓冲帮助。感谢您的回复,只是尝试了您所说的方式,但没有运气,您可以在我的问题更新中了解我是如何做的。