使用字节流复制文件

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

public class Hello{
    public static void main(String args[]) throws Exception{
        String sourceFile = "D:" + File.separator + "Manor.jpg";
        String targetFile = "D:" + File.separator + "copy.jpg";
        File infile = new File(sourceFile);
        File outfile = new File(targetFile);
        copy(infile,outfile);
    }
    /**
     * 文件拷贝操作
     * @param infile
     * @param outfile
     * @return
     * @throws Exception
     */
    public static boolean copy(File infile,File outfile) throws Exception{
        InputStream input = null;
        OutputStream output = null;
        try{
            long start = System.currentTimeMillis();
            if(!outfile.getParentFile().exists()){
                outfile.getParentFile().mkdirs();
            }
            input = new FileInputStream(infile);
            output = new FileOutputStream(outfile);
            int temp = 0 ;
            while((temp = input.read()) != -1){
                output.write(temp);
            }
            long end = System.currentTimeMillis();
            System.out.println("花费时间:" + (end - start));
            return true;
        }
        catch (Exception e){
            throw e;
        }
        finally{
            if(input != null){
                input.close();
            }
            if(output != null){
                output.close();
            }
        }

    }
}

改进代码,使用字节数组,更快

public static boolean copy(File infile,File outfile) throws Exception{
        InputStream input = null;
        OutputStream output = null;
        try{
            long start = System.currentTimeMillis();

            byte data[] = new byte[2048];
            input  = new FileInputStream(infile);
            output = new FileOutputStream(outfile);
            int temp = 0;
            while((temp = input.read(data)) != -1){
                output.write(data,0,temp);
            }

            long end = System.currentTimeMillis();
            System.out.println("花费时间:" + (end - start)/(double)1000 + "秒");
            return true;
        }
        catch (Exception e){
            throw e;
        }
        finally{
            if(input != null){
                input.close();
            }
            if(output != null){
                output.close();
            }
        }

    }
时间: 2024-12-08 16:12:51

使用字节流复制文件的相关文章

IO流,字节流复制文件,字符流+缓冲复制文件

JAVAIO如果按流向分:输入流和输出流两种 输入流的基类:InputStream   Reader 输出流的基类:OutputStream   Writer 如果按数据单元划分:字节流和字符流 字节流输入输出的基类:InputStream  OutputStream 字符流输入输出的基类:Reader   Writer 字节流复制文件内容 public static void main(String[] args) { //字节流复制文件内容 InputStream io=null; Outp

字节流复制文件

import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.LinkedList;import java.util.List; //文件复制 //E:/3.jpg ---> D:/1.jpgpublic class CopyFileByIo { public static void main(String[] args) { FileInput

用IO字节流复制文件-CopyFileByIo

import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.LinkedList; import java.util.List; //文件复制 //E:/3.jpg ---> D:/3copy.jpg public class CopyFileByIo { public static void main(String[] args) {

字节流复制文件和字节缓冲流复制文件的时间比较

package cn.lijun.demo2; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; public class Copy { public st

字节流, FileOutputStream类,FileInputStream类,复制文件,字符流

字节输出流OutputStream OutputStream此抽象类,是表示输出字节流的所有类的超类.操作的数据都是字节 基本方法: 子类可继承调用以上方法 FileOutputStream类 构造方法: FileOutputStream类写入数据到文件中 例子: package com.oracle.FileoutStream; import java.io.FileOutputStream; import java.io.IOException; public class OutPUTste

IO流 - 复制文件(字节缓冲流+字节流)

一.什么是缓冲流 缓冲流的内部都包含一个缓冲区,通过缓冲区读写,可以提高了IO流的读写速度. 二.缓冲流+字节流复制文件 //明确数据源 FileInputStream fis=new FileInputStream("D:\\java1018\\buffer.txt"); //明确目的地 FileOutputStream fos=new FileOutputStream("D:\\java1018\\a\\buffer2.txt"); //创建缓冲流对象 //输入

java io流(字节流)复制文件

java io流(字节流) 复制文件 //复制文件 //使用字节流 //复制文本文件用字符流,复制其它格式文件用字节流 import java.io.*; public class Index{ public static void main(String[] args) throws Exception{ //字符流方式 //FileReader fz = new FileReader("E:/1.txt"); //FileWriter zt = new FileWriter(&qu

javaIO流之字节流的四种方式复制文件方式总结

/* * 需求:把e:\\a.mp4复制到当前项目目录下的copy.mp4中 * * 字节流四种方式复制文件: * 基本字节流一次读写一个字节: 共耗时:117235毫秒 * 基本字节流一次读写一个字节数组: 共耗时:156毫秒 * 高效字节流一次读写一个字节: 共耗时:1141毫秒 * 高效字节流一次读写一个字节数组: 共耗时:47毫秒 */ package cn.itcast_06; import java.io.BufferedInputStream; import java.io.Buf

字节流复制mp3文件(带缓冲区)

//自定义的缓冲区 import java.io.*; class  MyBufferedInputStream{    private byte[] buf = new byte[1024]; private InputStream in;        private int pos = 0, count = 0; MyBufferedInputStream(InputStream in){        this.in = in;    }        /*        一次读一个字节