使用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中编写文件的主要内容,如果未能解决你的问题,请参考以下文章

使用FileOutputStream在Java中编写文件

Java IO: FileOutputStream

Makefile,在 src 目录树中查找源代码并在构建文件中编译为 .o

怎么在windows中编iphone\itouch程序。最好能是win7环境

37使用FileInputStream和FileOutputStream读取和写入

spring中编程式事务控制