用Java实现读取计算机目录的文件

该博客介绍了一个Java程序,用于读取指定目录及其子目录下的文件,特别是那些具有特定后缀的文件。程序首先定义了一个FileViewer类,包含主方法和辅助方法,用于遍历目录、过滤文件并将其路径存储在列表中。通过设置后缀名参数,可以获取特定类型的文件,例如Java或HTML文件。如果未指定后缀,程序将返回所有文件。最后,程序还提供了一个方法将文件路径写入指定的文本文件。
<pre name="code" class="java">import java.io.*; 
import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.List; 

/** 
* 读取目录及子目录下指定文件名的路径 
* @author zdz8207 
* 
*/ 
public class FileViewer { 
public static void main(String[] args) { 
//List arrayList = FileViewer.getListFiles("g:/java","html",true); 

//读取g:/java下的以java 结尾的文件 如有子目录,包含之(后缀名为null则为所有文件) 
//List arrayList = FileViewer.getListFiles("g:/java","java",true); 

//经试验,后缀不能不填写,否则编译不通过,提示“FileViewer.java:17: 非法的表达式开始”。 
//另外后缀为""时的情况需要 增加到IF 里去,否则 后缀为""时,不会显示所有文件 
List arrayList = FileViewer.getListFiles("g:/java","",true); 
if(arrayList.isEmpty()) 
{ 
System.out.println("没有符号要求的文件"); 
} 
else 
{ 
String message = ""; 
message += "符号要求的文件数:" + arrayList.size() + "\r\n"; 
System.out.println(message); 

for (Iterator i = arrayList.iterator(); i.hasNext();) 
{ 
String temp = (String) i.next(); 
System.out.println(temp); 
message += temp + "\r\n"; 
} 
//将显示的文件路径写到指定的文件里,若文件不存在,则提示IO异常 
//java.io.FileNotFoundException: g:\ajax\java.txt (系统找不到指定的路径。) 
//如果 加个文件是否存在的判断,如不存在就在当前目录新建一个,则更好。 
appendMethod("g:/java.txt",message); 
} 
} 
public static List<String> fileList = new ArrayList<String>(); 

/** 
* 
* @param path 文件路径 
* @param suffix 后缀名 
* @param isdepth 是否遍历子目录 
* @return 
*/ 
public static List getListFiles(String path, String suffix, boolean isdepth) 
{ 
File file = new File(path); 
return FileViewer.listFile(file ,suffix, isdepth); 
} 

public static List listFile(File f, String suffix, boolean isdepth) 
{ 
//是目录
if (f.isDirectory() && isdepth == true) 
{ 
File[] t = f.listFiles(); 
for (int i = 0; i < t.length; i++) 
{ 
listFile(t[i], suffix, isdepth); 
} 
} 
else 
{ 
String filePath = f.getAbsolutePath(); 

System.out.println("suffix = "+suffix); 
if(suffix =="" || suffix == null) 
{ 
//后缀名为null则为所有文件 
System.out.println("----------------"); 
fileList.add(filePath); 
} 
else 
{ 
int begIndex = filePath.lastIndexOf(".");//最后一个.(即后缀名前面的.)的索引 
String tempsuffix = ""; 

if(begIndex != -1)//防止是文件但却没有后缀名结束的文件 
{ 
tempsuffix = filePath.substring(begIndex + 1, filePath.length()); 
} 

if(tempsuffix.equals(suffix)) 
{ 
fileList.add(filePath); 
} 
System.out.println("|||||||||||||||||||"); 
} 

} 

return fileList; 
} 

/** 
* 方法追加文件:使用FileWriter 
* @param fileName 
* @param content 
*/ 
public static void appendMethod(String fileName, String content) 
{ 
try 
{ 
//打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件 
FileWriter writer = new FileWriter(fileName, true); 
writer.write(content + "\r\n"); 
writer.close(); 
} 
catch (IOException e) 
{ 
e.printStackTrace(); 
} 
} 
}




                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值