黑马程序员技术交流社区
标题:
获取一个文件夹下某种格式文件的个数并拷贝.
[打印本页]
作者:
BackGaoz
时间:
2016-4-26 13:08
标题:
获取一个文件夹下某种格式文件的个数并拷贝.
这个题我研究了很久,但是问题出现在我不知道该怎么去记录这个数量.
我用了递归,因为可能一个文件夹下还有另外一个文件夹.但是如果我在方法里定义一个变量来当做计数器的话,那么递归调用时,每次调用都会把计数器的值给重新变成0.
package com.heima.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class Test1 {
/*
* 计算指定路径下所有.txt文件包括子文件夹里的.txt文件的个数然后将所有的.txt文件复制到D盘下任意目录
*/
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个文件夹路径");
String line = sc.nextLine();
File file = new File(line); //将键盘录入的字符串封装成一个File
//File newDir = new File("D:\\", file.getName()); //创建一个文件夹用于将拷贝
copy(file);
}
/*
* 获取数量并拷贝的方法
* 1.返回值void
* 2.参数列表为File file
*/
public static void copy(File file) throws IOException {
File[] subFiles = file.listFiles();
for (File subFile : subFiles) {
if (subFile.isFile() && subFile.getName().endsWith(".txt")) {
/*FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(new File("D:\\", file.getName())); //拷贝到D盘下
byte[] arr = new byte[1024];
int len;
while((len = fis.read(arr)) != -1) {
fos.write(arr, 0, len);
}
fis.close();
fos.close();*/
FileReader fr = new FileReader(subFile); //一般.txt格式都是纯文本文件,可以用字符流
FileWriter fw = new FileWriter(new File("D:/",subFile.getName()));
int b;
while((b = fr.read()) != -1) {
fw.write(b);
}
fr.close();
fw.close();
}else if(subFile.isDirectory()) {
copy(subFile); //如果是一个文件夹就递归调用
}
}
}
}
复制代码
大家可以看看我的代码,试着帮我改一下.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2