2012-06-28 97 views
-2

因此,我發現前面的一些代碼看起來像它會工作,但它不會調用刪除文件來列出它們。我需要添加什麼才能刪除文件?刪除在java中具有擴展名的所有文件

import java.io.File; 
import java.util.regex.Pattern; 

public class cleardir { 
    static String userprofile = System.getenv("USERPROFILE"); 

    private static void walkDir(final File dir, final Pattern pattern) { 
     final File[] files = dir.listFiles(); 
     if (files != null) {  
      for (final File file : files) {  
       if (file.isDirectory()) {   
        walkDir(file, pattern);  
        } else if (pattern.matcher(file.getName()).matches()) { 
         System.out.println("file to delete: " + file.getAbsolutePath()); 
         }  } } } 
    public static void main(String[] args) { 
     walkDir(new File(userprofile+"/Downloads/Software_Tokens"), 
       Pattern.compile(".*\\.sdtid")); 
     } 
} 
+5

您需要添加'file.delete();' –

回答

-4
public class cleardir { 
static String userprofile = System.getenv("USERPROFILE"); 
    private static final String FILE_DIR = userprofile+"\\Downloads\\Software_Tokens"; 
    private static final String FILE_TEXT_EXT = ".sdtid"; 

    public static void run(String args[]) { 
    new cleardir().deleteFile(FILE_DIR,FILE_TEXT_EXT); 
    } 

    public void deleteFile(String folder, String ext){ 

    GenericExtFilter filter = new GenericExtFilter(ext); 
    File dir = new File(folder); 
    if (dir.exists()) { 
    //list out all the file name with .txt extension 
    String[] list = dir.list(filter); 

    if (list.length == 0) return; 

    File fileDelete; 

    for (String file : list){ 
    String temp = new StringBuffer(FILE_DIR) 
         .append(File.separator) 
         .append(file).toString(); 
     fileDelete = new File(temp); 
     boolean isdeleted = fileDelete.delete(); 
     System.out.println("file : " + temp + " is deleted : " + isdeleted); 
    } 
    } 
    } 
    //inner class, generic extension filter 
    public class GenericExtFilter implements FilenameFilter { 

     private String ext; 

     public GenericExtFilter(String ext) { 
     this.ext = ext;    
     } 

     public boolean accept(File dir, String name) { 
     return (name.endsWith(ext)); 
     } 
    } 
} 
+1

爲什麼複雜,沒有解釋,你已經給了簡單的答案?然後接受你自己的答案? – Dave

+0

非其他人爲我工作,簡單與否。 – jerhynsoen

+0

從上面的答案引用:'啊,這就是我一直在尋找的。謝謝! - jerhynsoen'聽起來像是對我的「答案」 – Dave

1

要刪除一個文件,你可以調用delete功能

2

一旦有文件路徑,刪除他:

File physicalFile = new File(path); // This is one of your file objects inside your for loop, since you already have them just delete them. 
try { 
    physicalFile.delete(); //Returns true if the file was deleted or false otherwise. 
          //You might want to know this just in case you need to do some additional operations based on the outcome of the deletion. 
} catch(SecurityException securityException) { 
    //TODO Handle. 
    //If you haven't got enough rights to access the file, this exception is thrown. 
} 
0

您可以調用刪除()方法在文件的一個實例上。務必檢查返回碼以確保您的文件實際上已被刪除。

0

爲每個要刪除的文件調用File.delete()。所以你的代碼是:

import java.io.File; 
import java.util.regex.Pattern; 

public class cleardir { 
    static String userprofile = System.getenv("USERPROFILE"); 

    private static void walkDir(final File dir, final Pattern pattern) { 
     final File[] files = dir.listFiles(); 
     if (files != null) {  
      for (final File file : files) {  
       if (file.isDirectory()) {   
        walkDir(file, pattern);  
        } else if (pattern.matcher(file.getName()).matches()) { 
         System.out.println("file to delete: " + file.getAbsolutePath()); 
         boolean deleteSuccess=file.delete(); 
         if(!deleteSuccess)System.err.println("[warning]: "+file.getAbsolutePath()+" was not deleted..."); 
        } 
       } 
      } 
     } 

public static void main(String[] args) { 
    walkDir(new File(userprofile+"/Downloads/Software_Tokens"), 
      Pattern.compile(".*\\.sdtid")); 
    } 
} 
+0

啊,這就是我一直在尋找。謝謝! – jerhynsoen

+0

你可以做的另一件事是使用String.endsWith(字符串),而不是該正則表達式... – DankMemes

0

使用file.delete();來刪除文件。

在嘗試編寫程序之前,您需要正確學習Java基礎知識。良好的資源:http://docs.oracle.com/javase/tutorial/index.html

+0

誘惑下來投票。你通過編寫代碼來學習,然後弄清楚你做錯了什麼。 – Dave

+0

我同意。閱讀文檔有幫助,但您可以通過實際編碼和提問問題來了解更多信息。 – DankMemes

0
final File folder = new File("C:/Temp"); 
     FileFilter ff = new FileFilter() { 

      @Override 
      public boolean accept(File pathname) { 
       String ext = FilenameUtils.getExtension(pathname.getName()); 
       return ext.equalsIgnoreCase("EXT"); //Your extension 
      } 
     }; 
     final File[] files = folder.listFiles(ff); 
     for (final File file : files) { 
      file.delete(); 
     } 
+0

您應該爲FilenameUtils-Class導入commons-io – Mirko

相關問題