这是我自己的做法:
将一个目录下的所有.java文件复制到另一个目录,但是要在复制的过程中更改文件后缀名。
思路:跟上一个一样,只是动作稍稍有一些不同,直接上代码
package pack; import java.util.*; import java.io.*; class CopyRenameFile{ 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<File>al=new ArrayList<File>();// 定义一个集合,该集合存储的是一个File对象。 FileInputStream fis;// 字节读取流 FileOutputStream fos;// 字节输出流 for(File file: files){// 对数组进行变量 if(file.isDirectory()) renameToFile(file,filename);// 如果被遍历的文件是个目录,那么继续调用该方法。 else if(file.getName().endsWith(".java"))// 如果是.java,就将该文件添加进List集合。 al.add(file); } for(File file: al){// 对集合进行变量 String name=file.getName().replace(".java",".txt");// 将集合中的.java替换成.txt。<pre name="code" class="javascript"><span style="white-space:pre"> </span>File newFile=new File(filename,name);// 将目录与替换后的名称封装成File,用于写入时定义的名称 fis=new FileInputStream(file);// 读取 fos=new FileOutputStream(newFile);// 写入 int len=0; byte[] buf=new byte[1024]; while((len=fis.read(buf))!=-1){ fos.write(buf,0,len); } fis.close(); fos.close(); } } }
时间: 2024-10-24 11:15:09