我也写了一个 能复制文件夹的小demo(包括文件夹中的文件)
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//File f1 = new File("a.txt");
//File f2 = new File("c:\\","a.txt");
//File f2 = new File("a123.txt");
//和输出流不一样,如果文件不存在则创建,如果存在就不创建
//boolean b = f2.createNewFile();//必须调用creat方法创建文件夹
//
// File dir = new File("ada\\d\\s");
// dir.mkdirs();
// dir.delete();
//renameDemo();
//System.out.println(b);
File f = new File("dirdemo");
copdirdemo(f,"G:\\eclipse4.4\\项目存储\\");
//System.out.println(f.mkdirs());
}
public static void copdirdemo(File f,String destpath) //拷贝文件夹
{
String desDirPath = destpath+f.getName();//创建新文件夹的位置
File dir = new File(desDirPath);
dir.mkdirs();//创建多级目录
File[] flies = f.listFiles();
for(File f1 :flies)
{
if(f1.isDirectory())
{
copdirdemo(f1,dir.getAbsolutePath()+File.separator);
}
else//是文件就拷贝文件
{
FileOutputStream fos = null;
FileInputStream fis = null;
try//拷贝时还需判断是否是文本文件
{
fis = new FileInputStream(f1);
File f2 = new File(dir.getAbsolutePath()+File.separator+f1.getName());
f2.createNewFile();
fos = new FileOutputStream(f2);
byte[] buf = new byte[1024];
int num =0;
while((num = fis.read(buf))!=-1)
{
fos.write(buf, 0, num);
fos.flush();
}
}catch(IOException e)
{
}finally
{
if(fis != null)
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(fos !=null)
{
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
} |