编写一个Java程序,将d:\java目录及其子目录下的所有.java文件按原来目录结构复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 求这题怎么破?求帮助。谢谢啦!
可以把问题分三步,复制目录, 过滤文件,改名
http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html
这里能找到你需要的全部函数
层级遍历目录下的所有文件,使用inputstream读取文件内容,并用outputstream输出到指定目录的文件内来实现复制,输出时,设置文件后缀为.jad即可。
简单写了一个示例代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class Test {
public static void doCopyFile(String sourcefolder,String targetFolder){
try {
(new File(targetFolder)).mkdirs(); //如果文件夹不存在 则建立新文件夹
File a=new File(sourcefolder);
String[] file=a.list();
File temp=null;
for (int i = 0; i < file.length; i++) {
String targetName = file[i];
//写入文件重命名
if(targetName.endsWith(".java")){
targetName = targetName.substring(0,targetName.length()-5)+".jad";
}
if(sourcefolder.endsWith(File.separator)){
temp=new File(sourcefolder+file[i]);
}
else{
temp=new File(sourcefolder+File.separator+file[i]);
}
if(temp.isFile()){
FileInputStream input = new FileInputStream(temp);
FileOutputStream output = new FileOutputStream(targetFolder + "/" + targetName);
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()){//如果是子文件夹
doCopyFile(sourcefolder+"/"+file[i],targetFolder+"/"+file[i]);
}
}
}
catch (Exception e) {
System.out.println("复制整个文件夹内容操作出错");
e.printStackTrace();
}
}
public static void main(String[] args){
String sourcefolder = "d:\\java";
String targetFolder = "d:\\jad";
Test.doCopyFile(sourcefolder,targetFolder);
}
}