你首先应该使用的mkdirs();
然后就是 不要获取路径 而是获取文件名称就行了
f.getName();而不是f.getPath();
package com.itheima.file;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Copy{
public static void main(String args[])throws IOException
{
File yf=new File("E:"+File.separator+"qiyi");
File mf=new File("F:"+File.separator+"123"+File.separator+"haha");
if(!mf.exists())
mf.mkdirs();
System.out.println(yf.getPath());
System.out.println(mf.getPath());
System.out.println(mf.isDirectory());
copy(yf,mf); //传递原文件和目标文件
}
public static void copy(File yf,File mf)throws IOException
{
if(yf!=null){
if(mf.isDirectory()){ //判断当前是否是目录
File f[]=yf.listFiles(); //列出全部目录
if(f!=null){ //排除无法列出的目录文件,例如:Windows系统文件
for(int i=0;i<f.length;i++)
{
if(f[i].isDirectory()){
File mk=new File(mf+File.separator+f[i].getName());
copy(f[i],mf);//复制文件
}else if(f[i].isFile()){
String src=f[i].getAbsolutePath();
String dec=mf+File.separator+f[i].getName();
copyFile(src,dec);
}
}
}
}
else{
System.out.println("为系统文件,不能复制");
}
}
}
private static void copyFile(String src, String dec) {
//源文件
File srcFile=new File(src);
//模板文件
File decFile=new File(dec);
BufferedInputStream bis=null;
BufferedOutputStream bos=null;
try{
bis=new BufferedInputStream(new FileInputStream(srcFile));
bos=new BufferedOutputStream(new FileOutputStream(decFile));
//读取文件数据
byte[] buf = new byte[1024];
int len = 0;
while((len = bis.read(buf)) > 0)
{
bos.write(buf, 0, len);
}
}catch(IOException e){
e.printStackTrace();
}finally{
if(bis!=null&&bos!=null){
try {
bis.close();
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
|