本文写出了两种复制方式,包括逐个字节复制和全部复制,代码如下:
package Work0630;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
public class TestIO1 {
public static void main(String[] args) throws IOException {
// testIo01();
//这段代码放在程序执行前
long begin = System.currentTimeMillis();
TestIO2();
// 这段代码放在程序执行后
long end = System.currentTimeMillis() - begin;
}
public static void TestIO2() throws FileNotFoundException, IOException {
//输入需要拷贝的和新建的文件的目录名称
System.out.println("需要拷贝的文件的路径和文件名称类型");
Scanner sca1=new Scanner(System.in);
String url1=sca1.next();
File file1=new File(url1);//判断文件是否存在
System.out.println("需要复制的文件如果存在:"+file1.exists());
System.out.println("需要拷贝的文件的路径和文件名称类型");
Scanner sca2=new Scanner(System.in);
String url2=sca1.next();
File file2=new File(url2);
FileInputStream fil1=new FileInputStream(file1);//调用字节流读写方法
FileOutputStream fil2=new FileOutputStream(file2);
for(int a=0;a<(int) file1.length();a++){
fil2.write(fil1.read());
}
}
public static void testIo01() throws FileNotFoundException, IOException {
//手动输入一个需要拷贝的文件的路径和文件名称类型
System.out.println("需要拷贝的文件的路径和文件名称类型");
Scanner sca1=new Scanner(System.in);
String url1=sca1.next();
System.out.println("需要拷贝的文件的路径和文件名称类型");
File file1=new File(url1);//判断文件是否存在
System.out.println("需要复制的文件如果存在:"+file1.exists());
//读取文件内容
FileInputStream fil1=new FileInputStream(file1);//调用读取文件方法,创建对象
byte[]b = new byte[1000];
fil1.read(b); //调用read方法,给数组b中赋值,值为读取的文件的内容,类型为byte
System.out.println("需要拷贝的内容为"+new String(b)); //使用String给byte转型为String类型输出
//关闭读取流
fil1.close();
//新建一个文件
System.out.println("请输入新建文件的路径及文件名称类型");
Scanner sca2=new Scanner(System.in);
String url2=sca1.next();
File file2=new File(url2);
file2.createNewFile();
//给新文件中拷贝内容
FileOutputStream fil2=new FileOutputStream(file2);
fil2.write(b);
//关闭写入流
fil2.close();
}
}