Java复制文件:字节流、字符流、数据流

来源:互联网 发布:营销软件sudm 编辑:程序博客网 时间:2024/05/16 07:43
package stream;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class TestStream {    public static void main(String[] args) {        method1("d:/test1.txt", "d:/test2.txt");        method2("d:/test.txt", "d:/test2.txt");        method3("d:/test.txt", "d:/test3.txt");    }    //方法一:字节流读写    public static boolean method1(String srcFile, String destFile) {        File sf = new File(srcFile);        //判断源文件是否存在        if (!sf.exists()){            System.out.println("源文件"+sf+"不存在!");            return false;        } else if (!sf.isFile()){            System.out.println("源文件"+sf+"不是一个文件!");            return false;        }        File df = new File(destFile);        //缓存区,一次性读取1024字节        byte[] buffer = new byte[1024];        try (                FileInputStream fis = new FileInputStream(sf);                FileOutputStream fos = new FileOutputStream(df);            )        {            while (true) {                //实际读取的长度是actuallyReaded,有可能小于1024                  int actuallyReaded = fis.read(buffer);                // -1表示没有可读的内容了                if(-1==actuallyReaded)                    break;                fos.write(buffer, 0, actuallyReaded);            }            return true;        } catch (IOException e) {            e.printStackTrace();        }        return false;     }    //方法二:字符流读写    public static void method2(String srcFile, String destFile) {        File sf = new File(srcFile);        File df = new File(destFile);        char[] ch = new char[1024];        try (                FileReader fr = new FileReader(sf);                FileWriter fw = new FileWriter(df);            )        {            while (true) {                int actuallyReaded = fr.read(ch);                if (-1==actuallyReaded)                    break;                fw.write(ch, 0, actuallyReaded);            }        } catch (IOException e) {            e.printStackTrace();        }    }    //方法三:数据流    public static void method3(String srcFile, String destFile) {        File sf = new File(srcFile);        File df = new File(destFile);        byte[] buffer = new byte[1024];        try (                FileInputStream fis = new FileInputStream(sf);                DataInputStream dis = new DataInputStream(fis);                FileOutputStream fos = new FileOutputStream(df);                DataOutputStream dos = new DataOutputStream(fos);            )        {            while (true) {                int actuallyReaded = dis.read(buffer);                if (-1==actuallyReaded)                    break;                dos.write(buffer, 0, actuallyReaded);            }        } catch (IOException e) {            e.printStackTrace();        }    }}
0 0
原创粉丝点击