用java言语编写一个遍历硬盘里面后缀名为.java的文件名。
跪求,java语言编写的扫描硬盘里面后缀为.java的文件名的算法,包括深度遍历和广度遍历。最好是有解释。...
跪求,java语言编写的扫描硬盘里面后缀为.java的文件名的算法,包括深度遍历和广度遍历。最好是有解释。
展开
展开全部
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
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
展开全部
t文件一样的。当你在记事本文件里编辑好java文件后,保存为java文件时,其实很多是没保存为java的,保存的文件后缀名是.java.txt,它依然是一个记事本文件。解决的办法是:打开我的电脑---工具---文件夹选项---查看---高级设置,找到“隐藏已知文件类型的扩展名”,把前面的那个勾去掉就行了,单击确定。这样就可以知道你保存的到底是不是java文件了。
java文件的图标就是记事本的图标,所以记事本改为java文件时,依然显示记事本的图标。
如果你想改变它的图标那就选择另一种打开方式
java文件的图标就是记事本的图标,所以记事本改为java文件时,依然显示记事本的图标。
如果你想改变它的图标那就选择另一种打开方式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
}
}
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);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
}
}
}
}
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);
}
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询