`
cucaracha
  • 浏览: 141983 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A8f3fa2f-18ce-3862-897a-5d2209197c90
Java NIO.2
浏览量:88236
7a076ba7-8ec8-3241-aa3c-67bb2f7856a2
Java EE 7 简明教...
浏览量:36858
社区版块
存档分类
最新评论

[NIO.2] 第三十五篇 编写一个文件删除应用

阅读更多
如果要删除单个文件,可以直接调用 delete() 或 deleteIfExists() 方法,它们会将文件从文件系统中删除。如果要删除目录树,则是通过  FileVisitor 的具体实现来递归调用 delete() 或 deleteIfExists() 方法。在开始之前,要注意以下原则:

  •     在删除目录之前,要确保目录是空的。
  •     删除文件最好在 visitFile() 方法中。
  •     最好在  postVisitDirectory() 方法中删除目录。
  •     如果文件不允许访问,那么 visitFileFailed() 方法需要返回 FileVisitResult.CONTINUE 或 TERMINATE,具体返回什么由你的需求决定。
  •     删除操作可以删除软链接的目标文件,但是如果目标文件在我们删除的目录树范围之外,那么不建议这么做。


下面的代码将递归删除整个  C:\rafaelnadal 目录:

import java.io.IOException; 
import java.nio.file.FileVisitOption; 
import java.nio.file.FileVisitResult; 
import java.nio.file.FileVisitor; 
import java.nio.file.Files; 
import java.nio.file.Path; 
import java.nio.file.Paths; 
import java.nio.file.attribute.BasicFileAttributes; 
import java.util.EnumSet; 
class DeleteDirectory implements FileVisitor {     
 
 boolean deleteFileByFile(Path file) throws IOException { 
    return Files.deleteIfExists(file); 
 } 
 
 @Override 
 public FileVisitResult postVisitDirectory(Object dir, IOException exc)  
                                                                  throws IOException { 
 
    if (exc == null) { 
        System.out.println("Visited: " + (Path) dir); 
        boolean success = deleteFileByFile((Path) dir); 
 
        if (success) { 
             System.out.println("Deleted: " + (Path) dir); 
        } else { 
              System.out.println("Not deleted: " + (Path) dir); 
        } 
    } else { 
        throw exc; 
    } 
    return FileVisitResult.CONTINUE; 
 } 
 
 @Override 
 public FileVisitResult preVisitDirectory(Object dir, BasicFileAttributes attrs)  
                                                                  throws IOException { 
   return FileVisitResult.CONTINUE;  
 } 
 
 @Override 
 public FileVisitResult visitFile(Object file, BasicFileAttributes attrs)  
                                                                  throws IOException { 
   boolean success = deleteFileByFile((Path) file); 
 
   if (success) { 
        System.out.println("Deleted: " + (Path) file); 
   } else { 
        System.out.println("Not deleted: " + (Path) file); 
   } 
 
   return FileVisitResult.CONTINUE; 
 } 
 
 @Override 
 public FileVisitResult visitFileFailed(Object file, IOException exc)  
                                                                  throws IOException { 
   //report an error if necessary 
 
   return FileVisitResult.CONTINUE; 
 } 
} 
 
class Main { 
 
 public static void main(String[] args) throws IOException { 
 
   Path directory = Paths.get("C:/rafaelnadal"); 
   DeleteDirectory walk = new DeleteDirectory(); 
   EnumSet opts = EnumSet.of(FileVisitOption.FOLLOW_LINKS); 
 
   Files.walkFileTree(directory, opts, Integer.MAX_VALUE, walk);        
   } 
} 


文章来源:http://www.aptusource.org/2014/04/nio-2-writing-a-file-delete-application/


0
0
分享到:
评论

相关推荐

    java开源包2

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包101

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包10

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包11

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包1

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包3

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包6

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包5

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包4

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包8

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包7

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包9

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    Java资源包01

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    JAVA12天全掌握

    3. 学习编写第一个Java程序——"Hello, World!",理解 HelloWorld 程序背后的原理。 第二天:Java语法基础 1. 掌握Java的基本数据类型,包括整型、浮点型、字符型和布尔型。 2. 学习变量的声明、初始化和使用,理解...

    java精通+开发案例 经典经典总结

    Java编程语言自1995年发布以来,一直保持着旺盛的生命力,广泛应用于企业级应用、移动应用(尤其是Android平台)以及互联网后端服务。"java精通+开发案例 经典经典总结"这个主题涵盖了Java学习的核心内容和实战经验...

    Eclipse开发分布式商城系统+完整视频代码及文档

    │ 淘淘商城第三天笔记.docx │ ├─04.第四天 │ 01.第三天内容复习.avi │ 02.课程计划.avi │ 03.富文本编辑器的使用.avi │ 04.商品添加功能-分析.avi │ 05.商品添加功能实现.avi │ 06.规格参数介绍及实现...

    Java面试八股文十万字总结.docx

    - 第一个字符不能是数字。 - 不能使用关键字或保留字。 - 区分大小写。 **5. instanceof关键字的作用** 用于判断一个对象是否为某个类或其子类的实例。 **6. Java自动装箱与拆箱** - **装箱**:将基本类型转换为...

    Java IO 工具类大全

    例如,你可以使用`new File("path")`创建一个File对象,然后调用`exists()`检查文件是否存在,`mkdirs()`创建多级目录,`delete()`删除文件或目录。 四、FileInputStream和FileOutputStream 这两个类分别用于读写...

    疯狂JAVA讲义光盘内容

    《疯狂JAVA讲义》是一本深受...这个压缩包中的每一个子文件都是一个学习点,通过实际运行和修改代码,你可以加深对Java编程的理解,提高编程技能。无论你是Java新手还是希望巩固基础,这份资源都将是你宝贵的参考资料。

    Dingo:与 Burton 教授的 CS246 小组项目

    Java提供了`java.nio.file.FileSystemWatcher`或第三方库如Apache Commons IO的`FileAlterationObserver`,用于监听文件系统的变动,并在文件创建、修改或删除时触发相应事件。 3. **事件处理**:当检测到文件活动...

Global site tag (gtag.js) - Google Analytics