導航:首頁 > 編程語言 > javafilefilter

javafilefilter

發布時間:2024-12-17 06:21:18

A. java如何實現搜索功能。比如,輸入txt就能搜索出這個文件夾內所有txt格式的文件。請給完整代碼。

在Java中實現文件搜索功能,可以使用遞歸或非遞歸的方式遍歷文件夾及其子文件夾,查找符合特定條件的文件。這里提供一個示例代碼,用於搜索給定文件夾內所有指定擴展名的文件。代碼如下:

首先,定義一個主方法,該方法接受兩個參數:文件路徑和文件擴展名。主方法通過調用`getFile`方法實現文件搜索功能。以下是具體實現:

import java.io.*;

public class FileDemo {

public static void main(String[] args) throws Exception {

getFile("D:\\JavaDemo", ".txt");

}

private static void getFile(String pathName, final String endsWith) throws Exception {

File file = new File(pathName);

if (!file.exists())

throw new RuntimeException("文件不存在,你檢索個P呀。");

file.listFiles(new FileFilter() {

public boolean accept(File file) {

if (file.getName().endsWith(endsWith)) {

System.out.println(file.getName());

return true;

}

else

return false;

}

});

}

}

該代碼首先通過`File`類實例化給定的文件路徑,檢查文件是否存在,若不存在則拋出異常。接著使用`listFiles`方法遞歸地列出給定路徑下的所有文件。通過`FileFilter`介面實現文件篩選邏輯,僅列印出具有指定擴展名的文件名。

注意,此代碼僅適用於簡單的文件搜索需求。對於更復雜的場景,如遍歷多個文件夾、處理異常情況或優化性能,可能需要進一步調整和擴展。

此外,此示例中使用了`throws Exception`來捕獲可能拋出的異常,實際開發中建議具體處理不同類型的異常,以提高代碼的健壯性和可讀性。

在實際應用中,還可以根據需求對代碼進行優化,例如使用遞歸函數實現更復雜的文件夾搜索邏輯,或者使用`FileInputStream`等其他API處理文件內容。

以上代碼示例提供了一個基本的文件搜索框架,適用於初學者理解和學習Java文件操作。

B. 如何在java swing中用樹顯示所有磁碟

先用靜態方法File.listRoots()獲取所有磁碟(一個File數組),然後遍歷該File數組,用其listFiles()方法來列出該File下的所有文件(包括目錄),然後用測試每個文件是否目錄(用isDirectory()方法)。如果測試是目錄,再遞歸測試其子目錄。
在使用listFiles()方法時,也可以自己構建一個類,實現FileFilter介面,在該介面中判斷文件是否目錄。FileFilter實現類如下:
public class FileFilterImpl implements FileFilter{
public boolean accept(File file){

return file.isDirectory();
}
}
這樣用listFiles(new FileFilterImpl())返回的列表中將都是目錄,一般文件不包含在內了。

C. java如何實現文件搜索功能

java實現文件搜索主要使用file類和正則表達式,如下示例:

packagecom.kiritor.util;

importjava.io.File;
importjava.io.FileFilter;
importjava.util.Arrays;
importjava.util.Collections;
importjava.util.List;

/**
*文件的相關操作類
*
*@authorKiritor
*/
publicclassFileOperation{
;
privatestaticStringfilePath;
privatestaticFile[]fileList=null;//保存文件列表,過濾掉目錄

publicFileOperation(){

}

/**構造函數的參數是一個目錄*/
publicFileOperation(Stringpath){
Filefile=newFile(path);
if(file.isDirectory())
this.contentPath=path;
else
this.filePath=path;
}
/**獲取文件列表*/
publicstaticFile[]getFiles(){
if(contentPath==null){

Filefile=newFile(filePath);
fileList=newFile[1];
fileList[0]=file;
returnfileList;
}
fileList=newFile(contentPath).listFiles(newFileFilter(){

/**使用過濾器過濾掉目錄*/
@Override
publicbooleanaccept(Filepathname){
if(pathname.isDirectory())
{
returnfalse;
}else
returntrue;
}
});
returnfileList;
}

/**對當前目錄下的所有文件進行排序*/
publicstaticFile[]sort(){
getFiles();
Arrays.sort(fileList,newFileComparator());
returnfileList;
}

publicstaticvoidtree(Filef,intlevel){
StringpreStr="";
for(inti=0;i<level;i++){
preStr+="";
}
File[]childs=f.listFiles();
//返回一個抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中的文件。
for(inti=0;i<childs.length;i++){
System.out.println(preStr+childs[i].getName());
if(childs[i].isDirectory()){
tree(childs[i],level+1);
}
}
}

//提供一個"比較器"
.util.Comparator<File>{
@Override
publicintcompare(Fileo1,Fileo2){
//按照文件名的字典順序進行比較
returno1.getName().compareTo(o2.getName());
}

}
}

D. 用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

E. java 中如何獲得根目錄下的所有文件夾

import java.io.File;
import java.io.FileFilter;

public class C {

public static void main(String[] args) {

String root = "C:\\";
File file = new File(root);

//folders保存所有根目錄下面的文件夾。。
File[] folders = file.listFiles(new FileFilter(){

public boolean accept(File fl) {
return fl.isDirectory();
}

});
}

}

閱讀全文

與javafilefilter相關的資料

熱點內容
戴爾伺服器怎麼遷移 瀏覽:556
桌面圖標帶著文件夾 瀏覽:627
程序員成功之門 瀏覽:802
蘋果手機裡面怎麼找到從安卓設備轉移數據 瀏覽:107
app的技術體系是什麼 瀏覽:672
什麼app是一頭鹿 瀏覽:675
js生成推廣二維碼海報源碼 瀏覽:693
java修改文件夾 瀏覽:96
mac加密文件夾沒有出現兩個文件 瀏覽:254
linux上java編程 瀏覽:325
最好的解壓方法就是沉默 瀏覽:166
什麼app可以看雙色球開獎直播 瀏覽:702
單機手游伺服器怎麼發布 瀏覽:948
javacalendar獲取時間 瀏覽:860
有什麼畫畫娛樂的app 瀏覽:840
讀故事記單詞pdf 瀏覽:660
codecs控制器編程軟體 瀏覽:877
常用文件夾標簽尺寸 瀏覽:371
阿里雲伺服器備案白名單 瀏覽:346
伺服器是如何連接到網路的 瀏覽:168