使用java中的IO操作将指定源目录下的指定类型文件拷贝到指定目录中
程序员文章站
2022-06-16 12:51:38
...
需求:运用java中IO操作,将某目录中的某类型文件拷贝到制定的目录中
代码如下:
/**
* 该代码实现将指定源目录下的指定类型文件拷贝到指定目录中
*/
public class Copy {
public static void main(String[] args)throws IOException {
/**
* 第一个参数源目录
* 第二个参数文件类型
* 第三个参数拷贝到的目录
*/
copy("c:\\",".txt","F:\\2");
System.out.println("复制成功");
}
public static void copy(String sourceDirectory,String fileType, String targetDirectory )throws IOException{
//判断制定目录是否存在,若不存在,创建该目录
File target = new File(targetDirectory);
if (!target.exists()){
target.mkdirs();
}
//创建源文件对象
File file = new File(sourceDirectory);
File[] files = file.listFiles();
if (files == null){//如果文件列表为空,返回
return;
}
for (File file1 : files) {//遍历文件列表
String s = file1.getName();
if (s.endsWith(fileType)){
//调用拷贝方法
CopyBuffByByte(file1.getAbsolutePath(),targetDirectory);
}
if (file1.isDirectory()){//如果该文件为文件夹,继续调用自身,
//file1.getAbsolutePath()该参数为该文件夹的路径
copy(file1.getAbsolutePath(),".txt","F:\\2");
}
}
}
public static void CopyBuffByByte(String sourceDirectory,String targetDirectory)throws IOException {
//创建文件对象
File sourceFile = new File(sourceDirectory);
File targetFile = new File(targetDirectory + File.separator + sourceFile.getName());
//创建流,此处为节点流
FileInputStream fileInputStream = new FileInputStream(sourceFile);
FileOutputStream fileOutputStream = new FileOutputStream(targetFile);
//使用处理流,提高效率
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
//创建临时存放区
byte[] bytes = new byte[1024];
int length = bufferedInputStream.read(bytes);
while (length != -1){
bufferedOutputStream.write(bytes,0,length);
length = bufferedInputStream.read();
}
//关闭流,释放资源
bufferedInputStream.close();
bufferedOutputStream.flush();
bufferedOutputStream.close();
}
}
如果有什么错误的地方,欢迎指正!谢谢~~~~