您的位置:首页 > 其它

使用IO流复制文件,指定 文件/文件夹 绝对目录

2019-04-01 18:33 726 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_40468465/article/details/88954304

如果直接拷贝文件路径,貌似会报错,不知为什么.
大概是编码的问题

import java.io.*;
import java.util.Scanner;

public class CopyTest {
public static void main(String[] args) throws Exception {
//复制文件夹思路, 创建输入流和输出流
Scanner sc = new Scanner(System.in);
System.out.println(“注意,各级目录之间使用单斜杠划分!!!”);
System.out.println(“请输入需要拷贝的文件或者文件夹的绝对路径”);
String s = sc.next();
//String s = “J:\图片”;
//int length = s.length();
//String c = “H:\Test”;
System.out.println(“请输入文件存储的目标文件夹绝对路径”);
String c = sc.next();

if(new File(s).isFile()){
System.out.println("调用拷贝文件方法");
inFileA(new File(s),new File(c));
}else if(new File(s).isDirectory()){
System.out.println("调用拷贝多文件");
inFiles(new File(s),new File(c),s.length());
}

}

//如果为单文件就调用此方法
private static void inFileA(File infile,File outfile) throws Exception  {
if(infile.isFile()){//判断是文件的话,就进行拷贝
System.out.println("正在复制: "+infile.toString());
int len;
byte [] c = new byte[1024];
FileInputStream fis =  new FileInputStream(infile);
FileOutputStream fos = new FileOutputStream(new File(outfile,infile.getName()),true);
while ((len=fis.read(c)) != -1){
fos.write(c);
}
fis.close();
fos.close();
}
}

//如果是文件夹
private static void inFiles(File infile,File outfile,int length) throws Exception  {

File[] files = infile.listFiles();//获取需要复制的目标文件下的所有文件
FileInputStream fis = null; //创建输入流,然后判断是否为文件,如果是文件,就使用字节输入流获取文件
FileOutputStream fos = null;//创建输出流,然后将获取到的file创建在目标目录下
if (files !=null) {
for (File file : files) {//获取File数组里面的每个file
//判断是否存在相同文件夹 ,并实现复制文件夹功能

File file1 = new File(outfile,file.toString().substring(length));
System.out.println(new File(file1.toString()));
if(!file1.exists()){
if(file.isDirectory()){
file1.mkdirs();
System.out.println("正在复制: "+ file.toString() );
inFiles(file,outfile,length);
}

if(file.isFile()){//判断是文件的话,就进行拷贝
int len;
byte [] c = new byte[1024];
fis =  new FileInputStream(file);
fos = new FileOutputStream(file1,true);
while ((len=fis.read(c)) != -1){
fos.write(c);
// System.out.println("正在复制: "+file.toString());
}
fis.close();
fos.close();
}
}else{
System.out.println("文件已存在!");
}

}
}
}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐