开始碰到这个题目,肯定会觉得一点问题都没有,遇到目录只要用一个递归就好了,
但是忽略了一个问题,那就是文件可读不可读的问题。
有些系统文件是不可操作的,这个时候我们就要进行判断了,
那怎么判断呢?在文件夹(或整个D盘)上利用listFiles()方法获取文件数组之后,判断数组是否为空就可以解决这个问题。
- package 获取D盘下面的所有某种后缀名的文件并把名字存入一个文件中;
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileWriter;
- import java.io.IOException;
- public class Demo {
- public static void main(String[] args) throws IOException {
- File file = new File("D:\\");
- copy(file);
- }
- public static void copy(File file) throws IOException{
- File[] arr = file.listFiles();
- if (arr==null) {
- return;//如果文件为空,说明这个文件着的为空或者处于不可读状态
- }
-
- BufferedWriter br = new BufferedWriter(new FileWriter("F:\\copy.txt",true));
-
- for (File f : arr) {
- if (f.isFile()&&f.getName().endsWith(".java")) {//这里可以修改为你想知道的任意名字,方便大家查询
- br.write(f.getAbsolutePath());//获取全部路径
- br.newLine();
- }
- else if (f.isDirectory()) {
- copy(f);
- }
- }
- br.close();
- }
- }
复制代码 |