找出你的E盘里的所有.avi文件,并将这些文件的文件名打印到一个文本文件里 * 整体思路 * 封装两个方法——文件过滤器和输出流 * 过滤器 ——判断是文件 ——以.avi结尾? * 判断是文件夹——遍历文件夹,递归调用自身
package com.cskaoyan.Day16_HomeWork; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; /** * @author JokerHu * */ public class Java_4 { public static void main(String[] args) { File file = new File("E:"); File file2 = new File("E://1.txt"); findAviFiles(file, file2); } /** * 接收查找好的文件File并将其名字输出打印到E://1.txt * * @param file * @param file2 */ public static void output(File file, File file2) { // 声明文件输出流 FileOutputStream fos = null; try { // 构造一个向指定 File表示的文件写入数据,true为追加写入,默认false为覆盖 fos = new FileOutputStream(file2, true); String data = file.getAbsolutePath() + "\r\n"; // 用byte数组接收文件名 byte[] bs = data.getBytes(); // 输出到文本 fos.write(bs); System.out.println("已写入" + file.getAbsolutePath()); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (fos != null) { try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } } /** * 文件过滤器 * * @param file * @param file2 */ public static void findAviFiles(File file, File file2) { if (file.exists()) { // 是文件则直接输出 if (file.isFile()) { // 判断文件后缀,Sting类endsWith方法判断字符串是否以.avi结尾 if (file.getName().endsWith(".avi")) { output(file, file2); } else return; } // 是目录,则用File类型数组list接收目录中的文件的抽象路径名 else if (file.isDirectory()) { File[] listFiles = file.listFiles(); // 此文件夹目录为空 递归出口 if (listFiles == null) { return; } // foreach递归遍历 for (File file3 : listFiles) { findAviFiles(file3, file2); } } else return; } } }控制台输出
输出文本