这是我自己的一种做法:
就是将一个文件下的所有.java文件复制到另一个文件,复制成功后,并将刚刚复制过去的文件改成.txt
思路:首先我们要明确我们要获取的源,并明确我们要存储的目的。
然后对源下面的文件进行遍历,如果是.java的文件就进行读取,并复制到目的。
复制成功后需要更改扩展名,那么我们在复制的时候定义一个变量,记录住每一个复制过去的文件名,
并用集合进行存储,在对集合进行遍历,将集合中的文件名的后缀更改为.txt,并进行封装成对象,
在对目的中的文件进行更改即可。
package pack;
import java.io.*;
import java.util.*;
class CopyFileRename{
public static void main(String[] args)throws IOException{
File dir=new File("E:\\JAVASE\\JAVA复习代码\\");// 明确要操作的源。
File filename=new File("E:\\");// 明确要存储的位置
renameToFile(dir,filename);// 调用方法,进行复制改名操作
}
private static void renameToFile(File dir,File filename)throws IOException{// 该方法接收一个源和目的。
File[] files=dir.listFiles();// 将接收到的源下的所有文件封装成数组。
ArrayList<String>al=new ArrayList<String>();// 该集合用于存储每一次要复制时的路径。
FileInputStream fis;// 字节读取流,用于读取源下的文件。
FileOutputStream fos;// 字节输出流,将获取到的文件写入到目的。
for(File file: files){// 对数组进行变量,并进行条件判断,
if(file.isDirectory())
renameToFile(file,filename);// 如果该文件是个目录,就再次调用此方法,
else
if(file.getName().endsWith(".java")){// 如果该文件是.java,就进行复制,
String name=filename+file.getName();// 该变量用于记录复制文件的路径
al.add(name);// 将路径添加进集合
fis=new FileInputStream(file);// 读取file文件
fos=new FileOutputStream(name);// 写入目的。
int len=0;
byte[] buf=new byte[1024];
while((len=fis.read(buf))!=-1){
fos.write(buf,0,len);
}
fis.close();
fos.close();
}
}
try{// 为了看到现象,在复制后成功后等待两秒。
Thread.sleep(2000);
}catch(Exception e){}
for(int x=0; x<al.size(); x++){// 对集合进行变量
File file=new File(al.get(x));// 将集合内容封装成file对象。
String strName=file.getName();// 获取该file对象的名称。
String newName=strName.replace(".java",".txt");// 将获取到的名称的后缀替换成.txt
File newFile=new File(filename,newName);// 将替换后的名称封装成一个新的路径。
try{// 为了看到改名的操作,每一秒。改一个。
Thread.sleep(1000);
}catch(Exception e){}
file.renameTo(newFile);// 改名操作
}
}
}原文:http://blog.csdn.net/qiang3570/article/details/44870979