java 对文件夹下指定后缀名的读写操作(运用递归的案例)

package test;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileFilter;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;

/***
* 文件的读写操作
*
* @ClassName: FileReadOrWrite
* @Description:
* @author:JH020
* @date 2014年2月21日 上午9:51:41
* @version V1.0
*/
public class FileReadOrWrite {

/**
* 文件的主程序入口
*
* @param args
*/
public static void main(String[] args) {
// String readFilePath = "D://CEDD//HWWTest";
String readFilePath = "Z://";
File writerFile = new File("D://CEDD//lcsd.txt");
if (!writerFile.exists()) {
try {
writerFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
FileWriter fw;
try {
fw = new FileWriter(writerFile);
FileReadOrWrite.listFile(readFilePath, fw);
} catch (IOException e) {
e.printStackTrace();
}

}

/**
* 调用两个读写的方法
*
* @param name
* @param fw
*/
public static void listFile(String name, FileWriter fw) {
try {
FileReadOrWrite.list_html(name, fw);
FileReadOrWrite.list_htm(name, fw);
fw.flush();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}

/**
* 列出读文件夹目录下所有以 .html 结尾的文件
*
* @param name
* @param fw
*/
public static void list_html(String name, FileWriter fw) {
try {
File f = new File(name);
if (!f.exists()) {
System.out.println("文件不存在哦");
return;
}

if (f.isDirectory()) {
File[] list = f.listFiles(getFileExtensionFilter(".html"));
for (int i = 0; i < list.length; i++) {
String paths = "<a href=\"" + list[i].toString() + "\">"
+ list[i].toString() + "</a><br>";
String writePaths1 = paths.replace("Z:",
"http://localhost/lcsd");
String writePaths2 = writePaths1.replace("\\", "/");
fw.write(writePaths2);
System.out.println(writePaths2);
BufferedWriter bfw = new BufferedWriter(fw);
bfw.newLine();// 换行
}
list = f.listFiles(getNotDirFileFilter());
for (int i = 0; i < list.length; i++) {
if (list[i].isDirectory())
list_html(list[i].toString(), fw);
}
}
} catch (Exception e) {
System.out.println("IO error!/r/n" + e.toString());
}

}

/**
* 列出读文件夹目录下所有以 .htm 结尾的文件
*
* @param name
* @param fw
*/
public static void list_htm(String name, FileWriter fw) {
try {
File f = new File(name);
if (!f.exists()) {
System.out.println("文件不存在哦");
return;
}

if (f.isDirectory()) {
File[] list2 = f.listFiles(getFileExtensionFilter(".htm"));
for (int i = 0; i < list2.length; i++) {
String paths = "<a href=\"" + list2[i].toString() + "\">"
+ list2[i].toString() + "</a><br>";
String writePaths1 = paths.replace("Z:",
"http://localhost/lcsd");
String writePaths2 = writePaths1.replace("\\", "/");
fw.write(writePaths2);
System.out.println(writePaths2);
BufferedWriter bfw = new BufferedWriter(fw);
bfw.newLine();// 换行
}
list2 = f.listFiles(getNotDirFileFilter());
for (int i = 0; i < list2.length; i++)
if (list2[i].isDirectory())
list_htm(list2[i].toString(), fw);
}
} catch (Exception e) {
System.out.println("IO error!/r/n" + e.toString());
}
}

/***
* 指定扩展名过滤
*
* @param extension
* @return
*/
public static FilenameFilter getFileExtensionFilter(String extension) {
final String _extension = extension;
return new FilenameFilter() {
public boolean accept(File file, String name) {
boolean ret = name.endsWith(_extension);
return ret;
}
};
}

/**
* 如果是文件夹( 文件还是目录过滤)
*
* @return
*/
public static FileFilter getNotDirFileFilter() {

return new FileFilter() {
public boolean accept(File file) {
return file.isDirectory();// 关键判断点
}
};

}

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值