java实现文件拷贝

java实现文件拷贝 工具/原料 java eclipse 方法/步骤 如果想要实现文件的拷贝操作,那么现在有两种做法: 1.将所有的文件内容一次性读取到程序之中,而后一次性输出: 2.采用边读边输出的方,那么现在就不会占用过大的内存空间: 由于现在有可能要拷贝二进制数据,那么一定使用字节流比较合适一下. 如果输入参数正确了,那么应该进行源文件的验证. package com.gwolf; import java.io.File; public class TestDemo { public s

java实现文件拷贝

工具/原料

  • java
  • eclipse

方法/步骤

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

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

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

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

  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]);

    }

    }

  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();// 创建目录

    }

    }

    }

  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);

    }

    }

    }

  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();

    }

    }

  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();

    }

    }

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

你还喜欢看的