用java言语编写一个遍历硬盘里面后缀名为.java的文件名。

跪求,java语言编写的扫描硬盘里面后缀为.java的文件名的算法,包括深度遍历和广度遍历。最好是有解释。... 跪求,java语言编写的扫描硬盘里面后缀为.java的文件名的算法,包括深度遍历和广度遍历。最好是有解释。 展开
 我来答
flyingFish211
2011-02-25 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.1亿
展开全部
import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.List;

public class Test {

public static void main(String[] args) {

//用来保存java文件的名字的list
List<String> javaFilelist = new ArrayList<String>();
String filePath = "C://111"; //要测试的文件,如果是分区,必须是C://这样子的
getAllFiles(new File(filePath), javaFilelist);

if(javaFilelist.size() == 0){
System.out.println("No java file found under " + filePath);
}

System.out.println("Java file list in " + filePath);
for(String javaFileName: javaFilelist){
System.out.println(javaFileName);
}

}

public static void getAllFiles(File path, List<String> list){

if(path.isFile()){//如果是文件
if(path.getName().matches("^.+\\.java$")){//用正则表达式并且是java文件加入list
list.add(path.getAbsolutePath());
}
}else{//这里加入一个过滤,过滤掉非java文件,只保留java文件和文件夹
File[] fileAry = path.listFiles(new JavaFileFilter());

if(fileAry == null || fileAry.length == 0){
return;
}

for(File file: fileAry){
getAllFiles(file, list);
}

}

}
}

class JavaFileFilter implements FileFilter{

public boolean accept(File pathname) {

if(pathname.isDirectory()){//如果是目录也接受
return true;
}else{//如果是java文件,才接受
return pathname.getName().matches("^.+\\.java$");
}

}

}

-------------
测试文件夹下所有文件及其文件夹,输出应该只有4个文件,11.java, 444.java, test.java, 222.java
C:\111>tree /F
Folder PATH listi
Volume serial num
C:.
│ 11.java
│ abdef.txt

├—2
│ 444.java
│ test.java

└—3
│ 222.java

└—2.java
--------程序输出
Java file list in C://111
C:\111\11.java
C:\111\2\444.java
C:\111\2\test.java
C:\111\3\222.java
acehb70
2011-02-26 · TA获得超过638个赞
知道小有建树答主
回答量:747
采纳率:0%
帮助的人:171万
展开全部
t文件一样的。当你在记事本文件里编辑好java文件后,保存为java文件时,其实很多是没保存为java的,保存的文件后缀名是.java.txt,它依然是一个记事本文件。解决的办法是:打开我的电脑---工具---文件夹选项---查看---高级设置,找到“隐藏已知文件类型的扩展名”,把前面的那个勾去掉就行了,单击确定。这样就可以知道你保存的到底是不是java文件了。

java文件的图标就是记事本的图标,所以记事本改为java文件时,依然显示记事本的图标。
如果你想改变它的图标那就选择另一种打开方式
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
编程笔记
2015-12-23 · 超过31用户采纳过TA的回答
知道答主
回答量:106
采纳率:0%
帮助的人:36万
展开全部
private void checkFiles() {
List<File> ls = new ArrayList<>();// 连表用于保存后缀名为.java的文件。
File[] fs = File.listRoots();
for (File el : fs) {
checkFiles(ls, el);
}
}

/**
*
* @param ls 连表用于保存后缀名为.java的文件。
* @param f
*/
private void checkFiles(List<File> ls, File f) {
if (f.isDirectory()) {
File[] fs = f.listFiles();
if (fs != null) {
for (File element : fs) {
checkFiles(ls, element);
}
}
}
if (f.getName().endsWith(".java")) {
ls.add(f);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友77b129d416d
2011-02-25 · TA获得超过542个赞
知道小有建树答主
回答量:438
采纳率:0%
帮助的人:399万
展开全部
public class Test {
private static ArrayList filelist = new ArrayList();
public static void main(String args[]) throws IOException{
Test t = new Test();
t.refreshFileList("D:\\java");
}
/**
* @param strPath
* 递归函数
*/
public static void refreshFileList(String strPath) {
File dir = new File(strPath);
File[] files = dir.listFiles();
if (files == null)
return;
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
refreshFileList(files[i].getAbsolutePath());
} else {
String strFileName = files[i].getAbsolutePath().toLowerCase();
//匹配.java后缀
if(strFileName.substring(strFileName.length()-5, strFileName.length()).equalsIgnoreCase(".java")){
System.out.println("---"+strFileName);
filelist.add(files[i].getAbsolutePath());
}
}
}
}
}
运行结果:
---d:\java\java\sddata1.java
---d:\java\sddata.java
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
清晨十点
2011-02-25
知道答主
回答量:22
采纳率:0%
帮助的人:14.2万
展开全部
import java.io.File;

public class FindJava {

public static void main(String[] args) {
File tempFile = new File("c:");
if(tempFile.exists()){
find(tempFile);
}
}

private static void find(File tempFile) {
if(tempFile.isFile()){
if(tempFile.getName().toUpperCase().endsWith(".JAVA")){
System.out.println(tempFile.getAbsolutePath());
}
}else if(tempFile.isDirectory()){
File[] files = tempFile.listFiles();
for(File file:files){
find(file);
}
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式