找出你的E盤里的所有.avi文件酥夭,并將這些文件的文件名打印到一個(gè)文本文件里
- 整體思路
- 封裝兩個(gè)方法——文件過濾器和輸出流
- 過濾器 ——判斷是文件 ——以.avi結(jié)尾恶阴?
判斷是文件夾——遍歷文件夾,遞歸調(diào)用自身
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
{
// 構(gòu)造一個(gè)向指定 File表示的文件寫入數(shù)據(jù),true為追加寫入,默認(rèn)false為覆蓋
fos = new FileOutputStream(file2, true);
String data = file.getAbsolutePath() + "\r\n";
// 用byte數(shù)組接收文件名
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結(jié)尾
if (file.getName().endsWith(".avi"))
{
output(file, file2);
}
else
return;
}
// 是目錄,則用File類型數(shù)組list接收目錄中的文件的抽象路徑名
else if (file.isDirectory())
{
File[] listFiles = file.listFiles();
// 此文件夾目錄為空 遞歸出口
if (listFiles == null)
{
return;
}
// foreach遞歸遍歷
for (File file3 : listFiles)
{
findAviFiles(file3, file2);
}
}
else
return;
}
}
}
控制臺(tái)輸出
輸出文本