package test;
import java.io.*;
public class WriteToFileExample {
public static void main(String[] args) throws IOException {
String content = "T";
long startTime1 = System.currentTimeMillis();
FileOutputStream fos1 = new FileOutputStream("E://one.txt");
for (int i = 0; i < 100000; i++) {
fos1.write(content.getBytes());
}
fos1.close();
long endTime1 = System.currentTimeMillis();
long startTime2 = System.currentTimeMillis();
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("E://two.txt"));
for (int i = 0; i < 100000; i++) {
bos.write(content.getBytes());
}
bos.flush();
bos.close();
long endTime2 = System.currentTimeMillis();
System.out.println("不加缓冲的输出流写入文件所需时间:" + (endTime1 - startTime1) + " ms");
System.out.println("加缓冲的输出流写入文件所需时间:" + (endTime2 - startTime2) + " ms");
}
}
由于缓存流和普通输入流在读取文件时性能不同:
当使用普通输入流读取文件时,每次读取都需要从磁盘中读取一部分数据,并将其存储到内存中,然后再读取下一部分数据。这种方式会产生大量的磁盘 I/O 操作,导致程序的性能较低。
而缓存流则可以通过缓存一定大小的数据块,将多次磁盘 I/O 操作合并为一次操作,提高了读取文件的效率,从而提高了程序的整体性能。具体而言,缓存流会先将一定数量的数据读入到缓存中,然后每次从缓存中读取数据,直到缓存被清空或达到指定的大小。
因此,在读取大型文件或进行频繁的读写操作时,使用缓存流比普通输入流更加高效。但是在读取小文件等场景中,由于缓存流需要额外的缓存空间和管理开销,可能会比普通输入流慢一些。
除了读取文件之外,缓存流还可以用于写入文件,也有类似的性能优势。总的来说,缓存流相比普通输入流,更适合读写文件时提高程序性能的需要。