package testPage; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; /** * File類有一個listFiles(FileNameFilter filter). * 只需要實現一個簡單的filter就可以找到滿足fileter條件的所有文件。 * 例如我要在E:\data\file_selector_test 目錄下面查找以.txt結尾的文件,我可以這么做。見下例。 * @author Administrator * */ public class FileNameSelector implements FilenameFilter { String extension = "."; public FileNameSelector(String fileExtensionNoDot) { extension += fileExtensionNoDot; } @Override public boolean accept(File dir, String name) { return name.endsWith(extension); } public static void main(String[] args) { File directory = new File("E:\\test\\file_selector_test"); //listFiles()列出所有文件 File[] files = directory.listFiles(); System.out.println("\n目錄" + directory.getName() + "下的所有文件"); for (File file : files) { System.out.print(" " + file.getName()); } //listFiles(FileNameFilter filter)列出所有.txt文件 File[] txtFiles = directory.listFiles(new FileNameSelector("txt")); System.out.println("\n目錄" + directory.getName() + "下的.txt文件"); for (File file : txtFiles) { System.out.print(" " + file.getName()); } //isDirectory()判斷是否為文件目錄 if(directory.isDirectory()){ System.out.println(directory.getPath()+" is Directory"); } //isFile()判斷是否為文件 if(directory.isFile()){ System.out.println(directory.getPath()+" is File"); } //File.separator輸出不同的系統中斜杠的方向 //在windows中斜杠的方向是向右斜的\\ //在Linux 中斜杠的方向是向左斜的// System.out.println("File.separator:"+File.separator); File f= new File("e:" + File.separator + "test" + File.separator +"file_selector_test"+File.separator+ "io.txt"); try { //createNewFile()方法:創建指定文件夾下的文件,如果文件夾不存在會報"找不到指定路徑"錯誤,應該首先手動創建該文件夾。返回值為boolean //若沒有該文件,創建成功返回true;若又該文件則創建失敗返回false System.out.println(f.createNewFile()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //delete()方法:刪除一個文件或者整個文件夾,返回值為布爾類型 //如果刪除的是文件夾,必須保證是一個空文件夾,否則刪除失敗 File f0 = new File("E:\\test\\file_selector_test\\io.txt"); boolean boo=f0.delete(); if(boo){ System.out.println("成功刪除文件"); }else{ System.out.println("刪除失敗"); } //調用創建的方法進行刪除文件夾以及該文件夾下的所有文件 deleteDirectory(new File("E:\\test\\file_selector_test2")); File f1 = new File("e:" + File.separator + "test"+File.separator+"io.txt"); //getPath()方法:將此抽象路徑名轉換為一個路徑名字符串 System.out.println(f1.getPath()); //getParent()方法:返回此抽象路徑名父目錄的路徑名字符串;如果此路徑名沒有指定父目錄,則返回 nul System.out.println(f1.getParent()); if(f1.exists()){ f1.delete(); } else{ try{ System.out.println(f1.createNewFile()); }catch(Exception e){} } //list()方法:返回一個字符串數組,這些字符串指定此抽象路徑名表示的目錄中的文件和目錄,列出的僅是名稱。 File f2 = new File("E:\\test\\file_selector_test"); String[] str = f2.list(); for(int i=0;i<str.length;i++){ System.out.println(str[i]); } //掃描某個路徑下的所有文件 findAllFiles(new File("E:\\")); } //刪除文件夾下的所有文件以及該文件夾 public static void deleteDirectory(File file){ File[] fileArray=file.listFiles(); if(fileArray.length>0){ for(int i=0;i<fileArray.length;i++){ if(fileArray[i].isFile()){ if(fileArray[i].delete()){ System.out.println(fileArray[i]+"文件刪除成功"); }else{ System.out.println(fileArray[i]+"文件刪除失敗"); } }else{ deleteDirectory(fileArray[i]); } } } //刪除文件夾 if(file.delete()){ System.out.println(file+"文件夾刪除成功"); }else{ System.out.println(file+"文件夾刪除失敗"); } } //掃描指定文件夾下的所有文件,並輸出 public static void findAllFiles(File f){ //判斷給定的路徑是否是目錄 if(f.isDirectory()){ File[] file = f.listFiles(); //再依次循環進行判斷 try{ for(int i = 0;i < file.length;i++){ //繼續把內容傳入到findAllFiles方法之中進行驗證 findAllFiles(file[i]); } }catch(Exception e){} } else{ System.out.println(f); } } }
本文參考資料:
http://blog.sina.com.cn/s/blog_7a27a9bf0100s887.html
http://www.blogjava.net/tovep/archive/2010/11/07/io.html