• 技术文章 >Java >Java基础

    java中怎么删除文件和目录

    王林王林2019-11-22 17:01:27原创9834

    delete()方法可用于删除文件或空目录/文件夹,如果文件被删除,delete()方法返回true,如果文件不存在则返回false。

    如果删除目录,delete()方法检查目录是否为空,如果目录为空,则删除目录,否则delete()方法不会执行任何操作并返回false,所以在这种情况下,必须递归删除所有文件,然后再删除目录。

    删除非空目录的另一种方法是使用Files.walkFileTree()方法,在这种方法中,可以逐个处理所有文件,并在单个文件对象上调用delete()方法。

    删除文件示例:

    package com.journaldev.files;import java.io.File;public class DeleteFileJava {
        /**
         * 此类显示如何在Java中删除文件
         * @param args
         */
        public static void main(String[] args) {
            // 带路径的文件名
            File file = new File("tmp/tmp2/file.txt");
            if(file.delete()){
                System.out.println("tmp/tmp2/file.txt File deleted");
            }else System.out.println("File tmp/tmp2/file.txt doesn't exist");
            // 只提供文件名称
            file = new File("file.txt");
            if(file.delete()){
                System.out.println("file.txt File deleted from Project root directory");
            }else System.out.println("File file.txt doesn't exist in the project root directory");
            //relative path
            file = new File("temp/file.txt");
            if(file.delete()){
                System.out.println("temp/file.txt File deleted from Project root directory");
            }else System.out.println("File temp/file.txt doesn't exist in the project root directory");
            // 删除空的目录
            file = new File("temp");
            if(file.delete()){
                System.out.println("temp directory deleted from Project root directory");
            }else System.out.println("temp directory doesn't exist or not empty in the project root directory");
            // 试图删除非空目录
            file = new File("D:/user/maxsu/project");
            if(file.delete()){
                System.out.println("D:/user/maxsu/project directory deleted from Project root directory");
            }else System.out.println("D:/user/maxsu/project directory doesn't exist or not empty");
        }}

    注意:与createNewFile()不同,delete方法不会抛出IOException异常。

    下面是一个简单的程序,演示如何删除非空目录,如果目录包含有文件,删除目录不会成功。

    删除目录示例:

    import java.io.File;public class JavaDeleteDirectory {
        public static void main(String[] args) {
            File dir = new File("D:/worksp/java/log");
            if(dir.isDirectory() == false) {
                System.out.println("Not a directory. Do nothing");
                return;
            }
            File[] listFiles = dir.listFiles();
            for(File file : listFiles){
                System.out.println("Deleting "+file.getName());
                file.delete();
            }
            //现在目录为空,所以可以删除它
            System.out.println("Deleting Directory. Success = "+dir.delete());
        }}

    递归删除目录示例:

    import java.io.IOException;
    import java.nio.file.FileVisitResult;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.nio.file.SimpleFileVisitor;
    import java.nio.file.attribute.BasicFileAttributes;
    public class JavaDeleteDirectoryRecursively {
        public static void main(String[] args) throws IOException {
            Path directory = Paths.get("D:/worksp/maxsu/log");
            Files.walkFileTree(directory, new SimpleFileVisitor<Path>() {
               @Override
               public FileVisitResult visitFile(Path file, BasicFileAttributes attributes) throws IOException {
                   Files.delete(file); // 有效,因为它始终是一个文件
                   return FileVisitResult.CONTINUE;
               }
               @Override
               public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
                   Files.delete(dir); //这将起作用,因为目录中的文件已被删除
                   return FileVisitResult.CONTINUE;
               }
            });
        }}

    推荐教程:java入门教程

    以上就是java中怎么删除文件和目录的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:java 删除 文件 目录
    上一篇:java中怎么判断字符串是否为空 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • java中如何结束if循环• java判断字符串是不是数字的方法• Java中如何设置带图片按钮的大小• java中怎么判断字符串是否为空
    1/1

    PHP中文网