面试题答案
一键面试1. 使用缓冲流
缓冲流(BufferedInputStream
和 BufferedOutputStream
)内部维护一个缓冲区,减少磁盘I/O次数,从而提高读写性能。
示例代码:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class BufferedStreamExample {
public static void main(String[] args) {
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("input.txt"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("output.txt"))) {
int length;
byte[] buffer = new byte[1024];
while ((length = bis.read(buffer)) != -1) {
bos.write(buffer, 0, length);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
2. 调整缓冲区大小
在创建缓冲流时,可以指定缓冲区大小。根据实际情况合理调整缓冲区大小,可以进一步优化性能。通常,较大的缓冲区在处理大文件时更有效,但也会占用更多内存。
示例代码:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CustomBufferSizeExample {
public static void main(String[] args) {
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("input.txt"), 8192);
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("output.txt"), 8192)) {
int length;
byte[] buffer = new byte[8192];
while ((length = bis.read(buffer)) != -1) {
bos.write(buffer, 0, length);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}