A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

复制指定目录下指定后缀名的文件并修改文件名称
需求:将D:\aaa下的所有.txt文件复制到E:\aaa_copy,并且将.txt文件,重命名为.java
1.定义void copyFileAndRename(File srcFile, File destFile)静态方法,方法内要求:
如果目标目录不存在需要创建目标目录
完成将源目录中的文件复制到目标目录下,并将后缀名修改为.java
每复制完并更改后缀之后提示哪个文件复制完毕
2.在main方法中定义 源目录和目标目录,调用copyFileAndRename方法,复制完在控制台提示复制完毕

[AppleScript] 纯文本查看 复制代码
	public static void main(String[] args) throws IOException {
		
		File src=getDir("D:\\System Volume Information");
		File desc=getDir("D:\\aaa_copy");
		if(src.equals(desc)){
			System.out.println("目标文件夹是源文件夹的子文件夹");
		}else{
			copyFile(src,desc);
			}
		fileReName(desc,".java");//只对同一个目录下文件重命名
		}
	
	public static File getDir(String filePath){
		File dir=new File(filePath);
		while(true){
			if(!dir.exists()){
//				System.out.println("文件路径不存在");
				dir.mkdirs();
			}else if(!dir.isDirectory()){
				System.out.println("不是文件路径");
			}else{
				return dir;
			}
		}
	}
	public static void copyFile(File srcFile, File destFile) throws IOException{
		//目录是系统文件就会报空
		File[] subFiles=srcFile.listFiles();
		for(File subFile:subFiles){
			if(subFile.isFile()&&subFile.getName().endsWith(".txt")){
				BufferedInputStream bis=new BufferedInputStream(new FileInputStream(subFile));
				BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(new File(destFile+"\\",subFile.getName())));
				int len=0;
				while((len=bis.read())!=-1){
					bos.write(len);
				}
				bis.close();
				bos.close();
			}
			else{
				if(subFile.isDirectory())
				copyFile(subFile,destFile);
			}
		}
	}
	
	public static void fileReName(File srcFile,String fileSuffix){
		File[] file=srcFile.listFiles();
		for(File f:file){
			if(f.isFile()&&f.getName().endsWith(".txt")){
				String srcFileName=f.getName().substring(0,f.getName().lastIndexOf("."));
				f.renameTo(new File(srcFile+"\\"+srcFileName+fileSuffix));
			}
		}
		System.out.println("重命名"+file.length+"个文件");
	}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马