散分60分,求教java 复制文件夹及其中文件,复制后文件的相对路径保持不变,请高手帮忙!在线等。。。

交个朋友好不好 2010-03-17 12:58:34
我现在得到了文件的绝对路径如“E:/workspace/efms/src/com/unis/file/directory/DirectoryAction.java”,我想把该目录中的相对路径“src/com/unis/file/directory/DirectoryAction.java”复制到绝对路径“E:\backUp”下,即变成了“E:/backUp/src/com/unis/file/directory/DirectoryAction.java”
现在是有源路径:String sourcePath = "E:/workspace/efms/src/com/unis/file/directory/DirectoryAction.java";
目标路径:String targetPath = “E:/backUp/src/com/unis/file/directory/DirectoryAction.java”
不知道怎样通过传这两个参数把文件夹和文件同时拷贝过去。
请高手指教!

...全文
245 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bbb332 2010-03-17
  • 打赏
  • 举报
回复
file类。。。。。。。。。
zuoguodang 2010-03-17
  • 打赏
  • 举报
回复
直接用流读不就行了,先遍历这个目录一个文件一个文件复制
xiesisi3 2010-03-17
  • 打赏
  • 举报
回复
Runtime.getRuntime().exec("COPY " + sourcePath + " " + targetPath);
就可以了。
sing4j 2010-03-17
  • 打赏
  • 举报
回复
看到你的问题,我随便写了一下。当中存在许多不足,但是你需要的功能可以实现。
你自己按照思路,修改这个代码就可以了。

public static void main(String[] args) throws IOException {
File srcFile = new File("F:\\test\\test.java");//你需要copy的文件
String relativePath = "\\test\\";//你需要指定相对路径是什么
InputStream is = new FileInputStream(srcFile);//读取文件
String tarPath = "E:\\bak" + relativePath;//E:\\bak是你要考的路径,后面的是你所说的相对路径
File tarF = new File(tarPath);//
tarF.mkdirs();//创建文件夹
File tarFile = new File(tarPath + srcFile.getName());//
tarFile.createNewFile();//创建文件
OutputStream os = new FileOutputStream(tarFile);//输出
int i;
byte[] b = new byte[255];
while ((i = is.read(b)) != -1) {
os.write(b);
}
is.close();
os.flush();
os.close();
}
xiaoboalex 2010-03-17
  • 打赏
  • 举报
回复
import   java.io.*;

public class CopyFiles {
public static void Copy(String src, String dst) {
File srcFile = new File(src);
File dstFile = new File(dst);
if (!srcFile.exists() || srcFile.isFile()) return;
if (!dstFile.exists() && !dstFile.mkdirs()) return;
File srcChilds[] = srcFile.listFiles();
for (int i=0; i<srcChilds.length; ++i) {
// Generate source and destination path
String srcpath = srcChilds[i].getAbsolutePath();
String dstpath = dstFile.getAbsolutePath() + srcpath.substring(srcFile.getAbsolutePath().length());
if (srcChilds[i].isFile()) {
// Copy file to destination
FileInputStream in = null;
FileOutputStream out = null;
byte buffer[] = new byte[8192];
int bytesRead;
try {
in = new FileInputStream(srcpath);
out = new FileOutputStream(dstpath);
while ((bytesRead = in.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
} catch (Exception e) {}
if (null != in) try { in.close(); } catch (Exception e) {}
if (null != out) try { out.close(); } catch (Exception e) {}
} else {
// Recursion for directory
Copy(srcpath, dstpath);
}
}
}

public static void main(String[] args) {
if (args.length != 2)
System.err.println("Wrong parameters. Correct usage: java CopyFiles <srcDir> <dstDir>");
else {
Copy(args[0], args[1]);
}
}
}


保存成CopyFiles.java,先用javac编译,然后再调用,例如:java CopyFiles d:\temp d:\newtemp
  • 打赏
  • 举报
回复
1楼的代码,不知道怎么用呀,谁能不能给个简单点的?
  • 打赏
  • 举报
回复
技术分是7分,可用分207分,呵呵
musiclee 2010-03-17
  • 打赏
  • 举报
回复
你一共有7分 怎么散60分?

public static void getAllFile(String rootpath, String filepath,
ArrayList<String> flist, boolean isconsubdir) {
// 获得某个目录下的所有文件列表(可以包括子目录)
String ffullpath = rootpath + File.separator + filepath;
File file = new File(ffullpath);

if (file.exists() && file.isDirectory()) {
String[] fileStr = file.list();
for (int i = 0; i < fileStr.length; i++) {
if (new File(ffullpath + File.separator + fileStr[i])
.isDirectory()) {
if (isconsubdir) {
// 是否包含子目录文件
flist.add("#");// 纪录以下是是目录
flist.add(filepath + File.separator + fileStr[i]);
getAllFile(rootpath, filepath + File.separator
+ fileStr[i], flist, isconsubdir);
}
} else {

flist.add(filepath + File.separator + fileStr[i]);
System.out.println(filepath + File.separator + fileStr[i]);
}
}

}
}




//调用此方法 复制文件函数


public void creatFile(String oldPath, String newPath,String type) {

String temp;
int dirnum = 0;
ArrayList<String> flist = new ArrayList<String>();
ReadFileandDir.getAllFile(oldPath, "", flist, true);//得到某个目录下的全部文件和文件夹
while (flist.size() != 0) {
temp = flist.get(0);
// if (temp.endsWith(type))
// System.out.println(temp);
if (temp.startsWith("#")) {
dirnum++;
} else {
if (dirnum > 0) {
//System.out.println("below is dir");
new File(newPath + temp).mkdir();
dirnum--;
} else {
// 如果是文件则dosometing
if (temp.endsWith(type))
BmpToBit(oldPath + temp);
//BMPReverse(oldPath + temp, newPath + temp);
}
}
flist.remove(0);
}
}





public static void main(String[] arg) {
ReadBMP readBMP = new ReadBMP();
String oldPath = "D:/oldbimp";
String newPath = "d:/bimp";
//readBMP.creatFile(oldPath, newPath,".bmp");
readBMP.BmpToBit("D://11.bmp");
// readBMP.ReadFile("D:\\oldbimp\\Bliss11.bmp","d:\\bimp\\1.txt");

}

62,611

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧