第一种,效率低
FileInputStream fis = new FileInputStream("d:\\iotest\\tupian.jpg"); FileOutputStream fos = new FileOutputStream("d:\\iotest\\tupianCopy.jpg"); int b; while((b = fis.read()) != -1) { fos.write(b); } fis.close(); fos.close();
第二种,定义一个大字节数组,效率高,但可能会出现内存泄出
FileInputStream fis = new FileInputStream("d:\\iotest\\tupian.jpg"); FileOutputStream fos = new FileOutputStream("d:\\iotest\\tupianCopy2.jpg"); byte[] arr = new byte[fis.available()]; fis.read(arr); fos.write(arr); fis.close(); fos.close();
第三种,定义一个小字节数组
FileInputStream fis = new FileInputStream("D:\\iotest\\1.txt"); FileOutputStream fos = new FileOutputStream("D:\\iotest\\2.txt"); byte[] arr = new byte[1024]; int len; while((len = fis.read(arr)) != -1) { fos.write(arr, 0, len); } fis.close(); fos.close();
第四种,用BufferedInputStream\BufferedOutputStream
FileInputStream fis = new FileInputStream("d:\\iotest\\1.txt"); FileOutputStream fos = new FileOutputStream("d:\\iotest\\copy1.txt"); /** * 对输入\出流进行包装 */ BufferedInputStream bis = new BufferedInputStream(fis); BufferedOutputStream bos = new BufferedOutputStream(fos); int b; while((b = bis.read()) != -1) { bos.write(b); } /** * 关包装后的流 */ bis.close(); bos.close();