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(); }