Java 选择一个目录 A,将 A 中的文件拷贝到目录 B 中。
程序员文章站
2022-06-16 13:50:06
...
设计要求:
(1) 从控制台输入要复制的源目录的路径,新建文件对象指向源目录的路径。如果源目
录不存在或者输入的文件不是目录,则提示“无效目录!”。
(2)从控制台输入目标目录路径,新建文件对象指向目标目录的路径。如果目标目录不
存在或者输入的文件不是目录,则提示“无效位置!”。
(3)创建复制文件方法。
※ 通过 listFiles()方法获取源目录下所有的子文件目录。
※ new File(目标目录,源目录子文件目录名)创建文件对象,如果当前子文件是
目录,则创建目录,递归调用复制文件方法;否则, 则复制文件到目标路径下。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Scanner;
public class newTest2 {
public static void main(String[] args) {
copy(); //main函数直接调用copy
//K.kuimeng
}
public static void copy() {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
System.out.println("请输入源目录路径:");
String path1=scanner.next();
File from=new File(path1);
System.out.println("请输入目标目录路径:");
String path2=scanner.next();
File to=new File(path2);
/*
* 在控制台上输入源目录路径和目标目录路径
* K.kuimeng
* */
if (!from.getPath().equals(to.getPath())) { //判断两地址是否相同
if (!from.isDirectory()||!from.exists()||from.isFile()) {
System.out.println("无效目录!"); //如果from不是目录或不存在或是一个文件,则返回“无效目录!”
}else {
recursion(from, to); //运用递归
System.out.println("文件拷贝完成!");
}
}else { //K.kuimeng
System.out.println("所输入地址相同,请核对后重新输入!"); //输入的两条路径重复时输出报错
}
if (!to.isDirectory()||!to.exists()||from.isFile()) {
System.out.println("无效位置!"); //如果to不是目录或不存在或是个文件,则返回“无效位置!”
}
}
public static void copyFile(File from,File to) {
InputStream in=null;
OutputStream out=null;
try {
out=new FileOutputStream(to);
in=new FileInputStream(from);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
byte[]b=new byte[1024*4];
int len;
try {
while ((len=in.read(b))!=-1) {
out.write(b, 0, len); //把读取的信息写入另一个文件中
} //K.kuimeng
out.flush(); //刷新
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void recursion(File from,File to) { //实现递归函数
if (from.isFile()) { //如果from是个文件
File file1=new File(to.getPath()+"/"+from.getName());
//在to的地址创建一个和from同名的文件file1
try {
file1.createNewFile(); //创建文件
copyFile(from, file1); //将from中的信息复制到file1中
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else { //如果from不是文件,而是一个目录
to=new File(to.getPath()+"/"+from.getName()); //在to的地址创建一个和from同名的目录
to.mkdirs(); //创建目录
for (File files:from.listFiles()) { //遍历这个from目录中的子文件目录
recursion(files, to); //将遍历出的每一个子文件重新带入递归类
}
}
}}
上一篇: Python中的元类
推荐阅读
-
利用递归,将某目录中的文件及文件夹全部以树形打印出来
-
java中如何直接读取zip压缩包目录中的各个文件的名字
-
移动文件夹中特定后缀名的文件到一个目录下面
-
需求:将指定目录(包含内容)复制到另一个目录中(利用字节流复制文本文件)
-
将任意两个指定的文件完成拷贝功能:比如:a.out a.txt b.txt 把a.txt的内容拷贝到b.txt 中
-
java 本地文件复制(将文件拷贝到另一个目录)
-
编写程序,将指定目录下所有.java文件拷贝到另一个目的中,并将扩展名改为.txt
-
Java 选择一个目录 A,将 A 中的文件拷贝到目录 B 中。
-
Java基础知识之将源目标中的所有文件拷贝到另一个文件当中
-
使用java中的IO操作将指定源目录下的指定类型文件拷贝到指定目录中