文件拷贝

文件拷贝
  1 //  文件拷贝
  2 import  java.io. *
  3 import  java.util.ArrayList; 
  4 import  java.util.List; 
  5 public   class  FileCopy 
  6private String message = ""
  7public String getMessage() 
  8  return message; 
  9}
 
 10public void setMessage(String message) 
 11  this.message = message; 
 12}
 
 13/** *//** 
 14  * 将源文件拷贝到目标文件 
 15  * 
 16  * @param src 
 17  *            写源文件地址,需文件名 
 18  * @param des 
 19  *            写目标文件地址,无需文件名 
 20  */
 
 21public boolean copyFile(String src, String des) 
 22  File srcFile = new File(src); 
 23  File desDir = new File(des); 
 24  File desFile = new File(des + "/" + srcFile.getName()); 
 25  // 判断源文件是否存在 
 26  if (!srcFile.exists()) 
 27   this.setMessage("源文件不存在!"); 
 28   return false
 29  }
 else if (!srcFile.isFile()) 
 30   this.setMessage("源文件格式错!"); 
 31   return false
 32  }
 
 33  // 判断源文件是否存在 
 34  if (!desDir.exists()) 
 35   this.setMessage("目标目录不存在!"); 
 36   return false
 37  }
 else if (!desDir.isDirectory()) 
 38   this.setMessage("不是有效的目录!"); 
 39   return false
 40  }
 
 41  BufferedReader reader = null
 42  BufferedWriter writer = null
 43  String str; 
 44  try 
 45   reader = new BufferedReader(new FileReader(srcFile)); 
 46   writer = new BufferedWriter(new FileWriter(desFile)); 
 47   // 判断目标文件是否存在及其格式,不存在就创建,格式不对先删除,存在就替代 
 48   if (!desFile.exists() || !desFile.isFile()) 
 49    if (desFile.exists()) 
 50     desFile.delete(); 
 51    }
 
 52    desFile.createNewFile(); 
 53   }
 
 54   // 从源文件读取数据,并写入目标文件 
 55   str = reader.readLine(); 
 56   while (str != null
 57    writer.write(str); 
 58    writer.newLine(); 
 59    str = reader.readLine(); 
 60   }
 
 61  }
 catch (IOException e) 
 62   this.setMessage(e.getMessage()); 
 63   return false
 64  }
 finally 
 65   if (reader != null
 66    try 
 67     reader.close(); 
 68    }
 catch (IOException e) 
 69     this.setMessage(e.getMessage()); 
 70    }
 
 71   }
 
 72   if (writer != null
 73    try 
 74     writer.close(); 
 75    }
 catch (IOException e) 
 76     this.setMessage(e.getMessage()); 
 77    }
 
 78   }
 
 79  }
 
 80  return true
 81}
 
 82private List fileList = new ArrayList(); 
 83
 84/** *//** 
 85  * 列出所有文件 
 86  * @param srcFile 
 87  */
 
 88private void file(File srcFile) 
 89  if (srcFile.isDirectory()) 
 90   String[] files = srcFile.list(); 
 91   
 92   for (int i = 0; i < files.length; i++
 93    File f = new File(srcFile + "/" + files[i]); 
 94    // 如果是文件加入列表,否则递归列出 
 95    if (f.isFile()) 
 96     fileList.add(f); 
 97    }
 else 
 98     file(f); 
 99   }
 
100  }
else this.setMessage(srcFile.getAbsolutePath()+"不是目录"); 
101}
 
102/** *//** 
103  * 建立目录 
104  * @param des 
105  * @throws IOException 
106  */
private void mkdir(File des) 
107  if (!des.exists() || !des.isDirectory()) 
108   mkdir(des.getParentFile()); 
109   if (des.exists()) 
110    des.delete(); 
111   }
 
112   des.mkdir(); 
113  }
 
114}
 
115/** *//** 
116  * 复制目录  将源目录下所有文件拷贝到目标目录下 
117  * @param src  源目录 
118   * @param des  目标目录 
119  */
 
120public boolean copyDir(String src, String des) 
121  File srcFile = new File(src); 
122  if (!srcFile.exists()) 
123   this.setMessage("源目录不存在!"); 
124   return false
125  }
 else if (!srcFile.isDirectory()) 
126   this.setMessage(src+"不是有效的目录!"); 
127   return false
128  }
 
129  file(srcFile); 
130   
131  for (int i = 0; i < fileList.size(); i++
132   String srcName = ((File) fileList.get(i)).getPath(); 
133   String desName = srcName.substring(src.length(), srcName.length()); 
134   desName = des + desName; 
135   File dir=new File(desName).getParentFile(); 
136   mkdir(dir); 
137   
138   if(!copyFile(srcName, dir.getPath()))
139    return false
140   }
 
141  }
 
142  return true
143}
 
144public static void main(String[] args) 
145
146  FileCopy t = new FileCopy(); 
147  System.out.println(t.copyFile("D:/aaa.txt","E:")); 
148  String src="D:/asdf"
149  String des="E:/adf"
150  System.out.println(t.copyDir(src, des)); 
151  System.out.println(t.getMessage()); 
152}
 
153
154}

155
156

你可能感兴趣的:(文件拷贝)