本帖最后由 田富丰 于 2014-5-30 23:37 编辑
写完这个代码后!!总感觉还可以优化!!不知道有没有大神啊!!而且我这个可能会出现栈溢出!所以想有没有其它的办法呢!- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- class CopyDirTest{
- public static void main(String[] args)throws Exception{
- File srcFile = new File("F:\\音乐"); //源文件夹
- File fileDes = new File("F:\\java");//将音乐整个目录复制到java目录下
- copyDir(srcFile,fileDes);
- }
- public static void copyDir(File srcFile,File desFile)throws Exception{
- //创建文件读取和写入流,用于复制文件
- FileInputStream fis = null;
- FileOutputStream fos = null;
- //获取源文件的绝对路径
- String srcName = srcFile.getAbsolutePath();
- //通过截取最后'\\',记录目的末创建的路径
- String dirName = srcName.substring(srcName.lastIndexOf('\\'));
- //记录目的路径
- String desDirName = desFile.getAbsolutePath()+dirName;
- //在目的路径中创建一个和源一样的目录
- desFile = new File(desDirName);
- desFile.mkdirs();
-
- //获取原目录的所有文件
- File[] files = srcFile.listFiles();
- //通过for循环遍历所以的文件
- for(File f:files){
- //判断是否是文件夹
- if(f.isDirectory()){
- //如果是就递归
- copyDir(f,desFile);
-
- } else if(f.isFile()){ //判断是否是文件
- //获取文件的名字
- String fileName = f.getName();
- //读取文件
- fis = new FileInputStream(f);
- //将文件复制到指定的目的地
- fos = new FileOutputStream(desDirName+"\\"+fileName);
- byte[] bys = new byte[1024*1024];
- int len = 0;
- while((len = fis.read(bys))!=-1){
- fos.write(bys,0,len);
- fos.flush();
- }
- fis.close();
- fos.close();
- }
- }
- }
- }
复制代码
|
|