文件的复制和后缀的替换(二)

package com.homework2;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
public class CopyUtils {
//复制文件
public static void  copyFile(File srcFile,File desFile) throws Exception{
InputStream in=new FileInputStream(srcFile);
OutputStream os=new FileOutputStream(desFile);
byte []a =new byte[1024];
int len=-1;
while((len=in.read(a))!=-1){
os.write(a, 0, len);
}
in.close();
os.close();
}
/*复制文件或者目录
 * sourFile存在,desFile不存在。 建立desFile对象。 
 sourFile不存在,desFile存在或者desFile不存在 返回方法,不用操做
 sourFile存在,desFile存在. --进行操做。
 */
public static void copy(File sourFile, File desFile) throws Exception {
if(!sourFile.exists()){
return;
}
if(sourFile.exists()&&!desFile.exists()){
desFile.mkdirs();
}
// sourFile存在,desFile存在。
File []files=sourFile.listFiles();
//遍历
for(File f:files){
//建立目录或者文件。
File file=new File(desFile,f.getName());
// 子目录有多是文件夹
if(f.isDirectory()){
file.mkdirs();
// 递归
copy(f, file);
}else{
file.createNewFile();
copyFile(f, file);
}
}
}
//将指定目录的.java或者.xml转换为.txt文件。而且将目录也复制过去
public static void switchFile(File sourFile,File desFile) throws Exception{
if (!sourFile.exists()) {
return;
}
if (sourFile.exists() && !desFile.exists()) {
desFile.mkdirs();
}
//源路径和目的路径都是存在的。
File []files=sourFile.listFiles();
//遍历
for(File f :files){
if(f.isDirectory()){
File file = new File(desFile,f.getName());
file.mkdir();
switchFile(f, file);
}else{
String name=f.getName();
if(name.endsWith(".java")||name.endsWith(".xml")){
String filename=name.substring(0, name.lastIndexOf("."));
File file=new File(desFile, filename+".txt");
copyFile(f, file);
}
}
}
   }
//格式化输出目录。
public static void print(File file,int length){
if(!file.exists()){
return;
}
//目录存在。
if(file.isDirectory()){
//文件夹。
File[] files = file.listFiles();
length++;
System.out.println(printDraw(length)+file.getName());
for(File f:files){
//文件夹或者文件。
//递归
print(f,length);
}
}else{
System.out.println(printDraw(length)+file.getName());
}
}
//打印出图形。
public static String printDraw(int length){
StringBuilder sb = new StringBuilder();
for(int i=0;i<length;i++){
sb.append("|--");
}
return sb.toString();
}
}
测试类:
package com.homework2;
import java.io.File;
import java.util.Scanner;
public class CopyUtilsTest {
public static void main(String[] args) throws Exception {
Scanner in = new Scanner(System.in);
System.out.println("输入第一个地址:");
String path1 = in.nextLine();
File file1 = new File(path1);
System.out.println("输入第二个地址:");
String path2 = in.nextLine();
File file2 = new File(path2);
CopyUtils.switchFile(file1,file2);
/*
CopyUtils.print(file1,0);*/
}
}
相关文章
相关标签/搜索