黑马程序员-IO-递归遍历文件夹中的全部文件,拷贝到另一个文件中,对每一个文件修改其后缀名

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

package com.lxh.iterview;
import java.io.*;
public class CopyReName {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		File file = new File("C:\\Users\\fox\\Workspaces\\MyEclipse 8.5\\JavaBasic\\src\\com\\lxh");
		copy(file);
		File file2 = new File("d:\\test");
		reName(file2);
	}
	 
	public static void reName(File file) {
		if(!file.exists()) {
			file.mkdirs();
		}
		// 列出该目录下的全部文件
		File[] files = file.listFiles();
		for(File f : files) {
			String name = f.getName();
			String[] strs = name.split("\\.");
			System.out.println(file.toString());
			File newFile = new File(file.toString() + File.separator + strs[0] + ".doc");
			System.out.println(newFile);
			System.out.println("rename:"+f.renameTo(newFile));
			
		}
	}
	
	public static void copy(File file) {
		File[] files = file.listFiles();
		for(File f : files) {
			// 是目录则递归
			if(f.isDirectory()) {
				copy(f);
			}
				
			// 是文件时则拷贝
			// 因为是文字,则直接使用字符流,且考虑使用
			else {
				// System.out.println(f.getName());
				BufferedReader bufr = null;
				BufferedWriter bufw = null;
				try {
					bufr = new BufferedReader(new FileReader(f));
					File f2 = new File("d:\\test\\" + f.getName());
					File fp = f2.getParentFile();
					if(!fp.exists()) {
						fp.mkdirs();
						f2.createNewFile();
					}
					
					bufw = new BufferedWriter(new FileWriter(f2));
					String line = null;
					while((line = bufr.readLine()) != null) {
						bufw.write(line);
						bufw.newLine();
					}
					bufw.flush();
				} catch (IOException e) {
					// TODO: handle exception
					e.printStackTrace();
				} finally {
					try {
						bufr.close();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					try {
						bufw.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
			}
				
		}
	}

}


这是一个复习的题目,做了一遍,根据几个不同java知识点,总结一下!


File构造函数:File(String parent , String child )

renameTo(File newFile)

getName() :得到了File对象的文件名。该名称是路径名名称序列中最后一个名称。如果路径名名称序列为空,则返回空字符串。


BufferedWriter 

newLine(),结尾的时候,根据平台的不同,写入一个行分隔符,添加/r/n或/r


String.split(".")

当想要分割"."点的时候,需要添加转义字符"\\",双斜杠。


你可能感兴趣的:(java基础)