已知源目录路径sourceFilePath,此目录下还有多级子目录和多个文本文件(*.txt)。尝试编写一个方法,将此目录下所有的文件拷贝至另一个目录targetFilePath,并其中的文本文件修改成SQL文件(*.SQL)。

已知源目录路径sourceFilePath,此目录下还有多级子目录和多个文本文件(*.txt)。尝试编写一个方法,将此目录下所有的文件拷贝至另一个目录targetFilePath,并其中的文本文件修改成SQL文件(*.SQL)。

public void copyFile(String oldPath, String newPath) throws IOException {
	(new File(newPath)).mkdirs();
	String[] file = new File(oldPath).list();
	File fileTemp = null;
	String separator = File.separator;
	for (int i = 0; i < file.length; i++) {
		if (oldPath.endsWith(separator)) {
			fileTemp = new File(oldPath + file[i]);
		} else {
			fileTemp = new File(oldPath + separator + file[i]);
		}
		if (fileTemp.isFile()) {
			FileInputStream fis = new FileInputStream(fileTemp);
			if (file[i].endsWith(".txt")) {
				fileTemp = new File(oldPath + separator + file[i].substring(0, file[i].length() - 4) + ".sql");
			}
			FileOutputStream fos = new FileOutputStream(newPath + "/" + fileTemp.getName());
			byte[] b = new byte[1024 * 5];
			int len;
			while ((len = fis.read(b)) != -1) {
				fos.write(b, 0, len);
			}
			fos.flush();
			fos.close();
			fis.close();
		}
		if (fileTemp.isDirectory()) {
			this.copyFile(oldPath + "/" + file[i], newPath + "/" + file[i]);
		}
	}
}