package cn.com.chuanzhi;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
*
* 编写一个程序,用于实现文件的备份,程序运行时的命令语法为:
* java MyCopy (sourcefile) (destfile)
*
* 输入路径创建file对象,遍历该对象,取到第一个目录名或文件名,用输入路径+第一个名称,创建一个新对象
* 该新对象调用的方法才会生效
* 每遍历出一个文件夹,就在新路径下创建该目录,否则找不到路径
*
*
* 测试方法
* 1)创建c://a/f/b b.txt desctop.ini /e c.aar c.html x.zip /d d.xml /e
* 2)cmd
* 3)java MyCopy c://a c://b
* 4)测试结果 c://b/f/b b.txt desctop.ini /e c.aar c.html x.zip /d d.xml /e
*/
public class MyCopy {
public static void main(String[] args) {
MyCopy myCopy = new MyCopy();
try{
myCopy.read(args[0],args[1]);
// myCopy.read("c://a", "c://b");
}catch(Exception e)
{
e.printStackTrace();
}
}
private void read(String fileUrl,String destfile)throws IOException
{
File file = new File(fileUrl);
String[] slist = file.list();
File newFile = null;
if(file.isDirectory())
{
for(int i=0;i<slist.length;i++)
{
if(fileUrl.endsWith(File.separator))//检查输入路径
{
newFile = new File(fileUrl + slist[i]);//"c://a/b"
System.out.println("ifnewFile " +newFile);
}else
{
newFile = new File(fileUrl + File.separator + slist[i]);
System.out.println("elsenewFile " +newFile);
}
if(newFile.isFile())//是内容
{
FileInputStream filein = new FileInputStream(newFile);
FileOutputStream fileout = new FileOutputStream(destfile + "/" + (newFile.getName()).toString());
int len;
byte[] bytes = new byte[1024*5];
while((len = filein.read(bytes)) != -1)
{
fileout.write(bytes, 0, len);
}
}
if(newFile.isDirectory())//方法不可用的原因
{
String s = (fileUrl + "/" + slist[i]);
String ss = (destfile + "/" + slist[i]);
System.out.println("fileUrl "+s);
System.out.println("destfile "+ss);
File makdir = new File(ss);
System.out.println(makdir.mkdir());
read(fileUrl + "/" + slist[i],destfile + "/" + slist[i]);
}
}
}
else
{
System.out.println("文件不存在");
}
}
}
package cn.com.chuanzhi;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class s {
/**
* @param args
*/
public static void main(String[] args) {
s ss = new s();
ss.copyFolder("c://a", "c://b");
}
public void copyFolder(String oldPath, String newPath) {
try {
(new File(newPath)).mkdirs(); // 如果文件夹不存在 则建立新文件夹
File a = new File(oldPath);
String[] file = a.list();
File temp = null;
for (int i = 0; i < file.length; i++) {
if (oldPath.endsWith(File.separator)) {
temp = new File(oldPath + file[i]);
} else {
temp = new File(oldPath + File.separator + file[i]);
}
if (temp.isFile()) {
FileInputStream input = new FileInputStream(temp);
FileOutputStream output = new FileOutputStream(newPath + "/" + (temp.getName()).toString());
byte[] b = new byte[1024 * 5];
int len;
while ((len = input.read(b)) != -1) {
output.write(b, 0, len);
}
output.flush();
output.close();
input.close();
}
if (temp.isDirectory()) {// 如果是子文件夹
copyFolder(oldPath + "/" + file[i], newPath + "/" + file[i]);
}
}
} catch (Exception e) {
System.out.println("复制整个文件夹内容操作出错");
e.printStackTrace();
}
}
}