使用FileOutputStream在Java中编写文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用FileOutputStream在Java中编写文件相关的知识,希望对你有一定的参考价值。
String remoteFile2 = "/test/song.mp3";
File downloadFile2 = new File("D:/Downloads/song.mp3");
OutputStream outputStream2 = new BufferedOutputStream(new FileOutputStream(downloadFile2));
InputStream inputStream = ftpClient.retrieveFileStream(remoteFile2);
byte[] bytesArray = new byte[4096];
int bytesRead = -1;
while ((bytesRead = inputStream.read(bytesArray)) != -1) {
outputStream2.write(bytesArray, 0, bytesRead);
}
这是一个用java编写代码的示例文件,
byte[] bytesArray = new byte[4096];
在这一行中,究竟4096意味着什么,改变这个值的可能性是多少?
答案
处理流时,通常会读取块中的字节。
如果你逐个读/写字节,那么每个字节都会有很多开销(比如初始化数组来存储字节,把字节放到流中,记住文件中的当前位置等等)。
因此,如果你读取一组字节,你仍然有那些开销但是较小(例如,如果你有4000个字节,你有4000x开销。但如果你每次读取100个字节,你只有4000/100 = 40x开销)
通常选择卡盘的长度以在读取/写入块的时间和块的大小之间进行平衡。
它通常设置为2k或4k。可能与磁盘扇区有关(512字节,2048字节......)
另一答案
这里4096是缓冲区大小。因此,无论何时进行循环,它首先读取4096个字节,之后它将进入循环内部。
以上是关于使用FileOutputStream在Java中编写文件的主要内容,如果未能解决你的问题,请参考以下文章
Makefile,在 src 目录树中查找源代码并在构建文件中编译为 .o
怎么在windows中编iphone\itouch程序。最好能是win7环境