java实现文件拷贝

2025-10-04 00:02:11

1、如果想要实现文件的拷贝操作,那么现在有两种做法:

1、将所有的文件内容一次性读取到程序之中,而后一次性输出;

2、采用边读边输出的方,那么现在就不会占用过大的内存空间;

由于现在有可能要拷贝二进制数据,那么一定使用字节流比较合适一下。

java实现文件拷贝

2、如果输入参数正确了,那么应该进行源文件的验证。

package com.gwolf;

import java.io.File;

public class TestDemo {

        public static void main(String[] args) throws Exception{

                if(args.length!=2) {

                        System.out.println("命令执行错误!");

                        System.exit(1);

                }

                

                File inFile = new File(args[0]);

                if(!inFile.exists()) {

                        System.out.println("源文件不存在,请确认执行路径");

                        System.exit(1);

                }

                

                File outFile = new File(args[1]);

        }

}

java实现文件拷贝

3、如果此时源文件正确,那么就需要定义输出文件,同事要考虑到输出文件有目录的情况。

package com.gwolf;

import java.io.File;

public class TestDemo {

        public static void main(String[] args) throws Exception{

                if(args.length!=2) {

                        System.out.println("命令执行错误!");

                        System.exit(1);

                }

                

                File inFile = new File(args[0]);

                if(!inFile.exists()) {

                        System.out.println("源文件不存在,请确认执行路径");

                        System.exit(1);

                }

                

                File outFile = new File(args[1]);

                if(!outFile.getParentFile().exists()) {

                        outFile.getParentFile().mkdirs();// 创建目录

                }

                

                

        }

}

java实现文件拷贝

4、接下来实现文件内容的拷贝。

package com.gwolf;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

public class TestDemo {

        public static void main(String[] args) throws Exception{

                if(args.length!=2) {

                        System.out.println("命令执行错误!");

                        System.exit(1);

                }

                

                File inFile = new File(args[0]);

                if(!inFile.exists()) {

                        System.out.println("源文件不存在,请确认执行路径");

                        System.exit(1);

                }

                

                File outFile = new File(args[1]);

                if(!outFile.getParentFile().exists()) {

                        outFile.getParentFile().mkdirs();// 创建目录

                }

                

                

                InputStream input = new FileInputStream(inFile);

                OutputStream outputStream = new FileOutputStream(outFile);

                

                int temp = 0;

                while((temp=input.read())!=-1) {

                        outputStream.write(temp);

                }

                

                

        }

}

java实现文件拷贝

5、文件读取完成之后,关闭所有的连接。

package com.gwolf;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

public class TestDemo {

        public static void main(String[] args) throws Exception{

                if(args.length!=2) {

                        System.out.println("命令执行错误!");

                        System.exit(1);

                }

                

                File inFile = new File(args[0]);

                if(!inFile.exists()) {

                        System.out.println("源文件不存在,请确认执行路径");

                        System.exit(1);

                }

                

                File outFile = new File(args[1]);

                if(!outFile.getParentFile().exists()) {

                        outFile.getParentFile().mkdirs();// 创建目录

                }

                

                

                InputStream input = new FileInputStream(inFile);

                OutputStream outputStream = new FileOutputStream(outFile);

                

                int temp = 0;

                while((temp=input.read())!=-1) {

                        outputStream.write(temp);

                }

                

                input.close();

                outputStream.close();

        }

}

java实现文件拷贝

6、这个时候发现,的确实现了拷贝,但是这个拷贝的速度实在太慢了。现在的程序属于单个字节的拷贝。我们必须采用部分数据读取并保存的方式。

package com.gwolf;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

public class TestDemo {

        public static void main(String[] args) throws Exception{

                if(args.length!=2) {

                        System.out.println("命令执行错误!");

                        System.exit(1);

                }

                

                File inFile = new File(args[0]);

                if(!inFile.exists()) {

                        System.out.println("源文件不存在,请确认执行路径");

                        System.exit(1);

                }

                

                File outFile = new File(args[1]);

                if(!outFile.getParentFile().exists()) {

                        outFile.getParentFile().mkdirs();// 创建目录

                }

                

                

                InputStream input = new FileInputStream(inFile);

                OutputStream outputStream = new FileOutputStream(outFile);

                

                int temp = 0;

                byte data[] = new byte[1024];

                

                while((temp=input.read(data))!=-1) {

                        outputStream.write(data,0,temp);

                }

                

                input.close();

                outputStream.close();

        }

}

java实现文件拷贝

7、在以后的代码编写过程之中一定会给你一个InputStream ,就需要按照以上的方法进行内容的输出。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢