这是我自己的一种做法:
就是将一个文件下的所有.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);// 改名操作 } } }
时间: 2024-10-05 04:58:38