Java IO从此不再难
作者:bin一、复制文件
这里使用输入输出缓冲区(BufferedInputStream、BufferedOutputStream),以提高性能,如果文件比较小的话,可以不用
@Test
public void test12() throws IOException {
// 输入和输出都使用缓冲流
FileInputStream in = new FileInputStream("/Users/zengbin/Desktop/64kb.jpg");
BufferedInputStream inBuffer = new BufferedInputStream(in);
FileOutputStream out = new FileOutputStream("/Users/zengbin/Desktop/64kb2.jpg");
BufferedOutputStream outBuffer = new BufferedOutputStream(out);
int len = 0;
byte[] bs = new byte[1024];
long begin = System.currentTimeMillis();
while (inBuffer.read(bs) > 0) {
outBuffer.write(bs);
}
System.out.println("复制文件所需的时间:" + (System.currentTimeMillis() - begin)); // 平均时间约 200 多毫秒
inBuffer.close();
in.close();
outBuffer.close();
out.close();
}
二、逐行读取文件,逐行写入文件
@Test
public void test13() throws IOException {
// 输入和输出都使用缓冲流
FileReader in = new FileReader("/Users/zengbin/Desktop/test.csv");
BufferedReader bufferedReader = new BufferedReader(in);
FileWriter out = new FileWriter("/Users/zengbin/Desktop/test.txt");
BufferedWriter bufferedWriter = new BufferedWriter(out);
String line = null;
while ((line = bufferedReader.readLine()) != null) {
bufferedWriter.write(line);
bufferedWriter.write("\n");
}
System.out.println("复制文件所需的时间:" + (System.currentTimeMillis())); // 平均时间约 200 多毫秒
bufferedReader.close();
bufferedWriter.close();
out.close();
in.close();
}
三、读取文件内容作为字符串
@Test
public void test14() throws IOException {
FileReader in = new FileReader("/Users/zengbin/Desktop/test.csv");
BufferedReader bufferedReader = new BufferedReader(in);
StringWriter stringWriter = new StringWriter();
String line = null;
while ((line = bufferedReader.readLine()) != null) {
stringWriter.write(line);
}
System.out.println(stringWriter);
bufferedReader.close();
in.close();
}