本帖最后由 被淹死的虫子 于 2015-6-4 19:40 编辑
四种读写方式,问题都在注释中了。。。。- import java.io.*;
- public class copyDir {
- public static void main(String[] args) throws IOException {
- // TODO Auto-generated method stub
- String target = "e:\\test\\84.jpg";
- String source = "e:\\test\\88.jpg";
- File file1 = new File(target);
- File file2 = new File(source);
- copyFile(file1,file2);
- }
-
- public static void copyFile(File file1,File file2) throws IOException{
- //定义文件读取流
- FileInputStream fis = new FileInputStream(file1);
- BufferedInputStream bufis = new BufferedInputStream(fis);
- //定义文件写入流
- FileOutputStream fos = new FileOutputStream(file2);
- BufferedOutputStream bufos = new BufferedOutputStream(fos);
-
- //读取和写入
-
- //文件字节流复制——太慢我们想到了自定义缓冲区
- int b = 0;
- while((b=fis.read())!=-1) {
- fos.write(b);
- }
- /*
- //文件流字节流复制——自定义缓冲区——为了进一步提高效率我们想到加入缓冲流
- byte[] buf = new byte[1024];
- int b = 0;
- while((b=fis.read(buf))!=-1){
- //fos.write(buf,0,b);
- fos.write(buf); //一样的效果。。为什么还要写0到b呢?
- }
-
- //缓冲流复制
- int b = 0;
- while((b=bufis.read())!=-1){
- bufos.write(b);
- }
- //带数组缓冲区的缓冲流复制————最后我想问缓冲流里为什么还要定义缓冲数组?更高效吗?
- byte[] buf = new byte[1024];
- int b = 0;
- while((b=bufis.read(buf))!=-1){
- bufos.write(buf,0,b);
- }
- */
- //关闭流
- fis.close();
- fos.close();
- bufis.close();
- bufos.close();
- }
- }
复制代码 |