Java个人总结——File各种操作

版权声明:以上所有博客均为冷漠的小猿所有,引用请注明出处 https://blog.csdn.net/lyf1997115/article/details/81675881

File

一 、File类是java中的文件操作类,其内部定义了多个构造方法,来接收不同的参数:

  1. File(File parent, String child)
    根据父路径和 child 路径名字符串创建一个新 File 实例。

  2. File(String pathname) //最为常用
    通过将给定路径名字符串创建一个 File 实例。

  3. File(String parent, String child)
    根据父路径名字符串和 child 路径名字符串创建一个新 File 实例。
  4. File(URI uri)
    通过将给定的 file: URI 转换为路径名来创建一个新的 File 实例。

例如:


String path = "C:\\Users\\Administrator\\Desktop\\Java";
File file = new File(path) ;    // 通过将给定路径名字符串创建一个 File 实例。 
File file2 = new File(file, "aaa.txt") ;  //根据父路径和 child 路径名字符串创建一个新 File 实例。

二、File类中定义了许多对文件和目录的操作方法,比较常用的有:

 1. public boolean exists()  : 判断指定目录是否存在,存在返回true
 2. public boolean isDirectory() : 判断给定目录是否为文件夹(目录)
 3. public long length() :返回指定目录的大小
 4. public boolean createNewFile() throws IOException : 根据给定的目录新建文件
 5. public boolean delete() : 根据指定目录删除文件或目录(不能删除非空目录)
 6. public void deleteOnExit() : 在程序结束时删除指定文件或目录
 7. public String[] list() : 返回指定目录里的全部文件及目录名
 8. public String[] list(FilenameFilter filter) : 返回符合指定规则的文件名及目录名
 9. public File[] listFiles() : 返回指定目录里的所有文件及目录的File对象
 10. public File[] listFiles(FilenameFilter filter) : 返回指定目录里符合规则的所有文件及目录的File对象
 11. public boolean mkdir() : 根据指定目录创建单级目录
 12. public boolean mkdirs() : 根据指定目录创建多级目录
 13. public boolean renameTo(File dest) : 更改文件名或目录名(可用于剪切)

示例代码一:(文件操作)

public static void path() throws Exception {
        File file = new File("d:") ;
        File file2 = new File(file, "a.txt") ;
        //创建
        if (!file2.exists()) {
            System.out.println("文件创建:" + file2.createNewFile()) ;
        }else {
            System.out.println("文件已存在");
        }
        //获取
        System.out.println("获取绝对路径:" + file2.getAbsolutePath());
        System.out.println("获取规范路径:" + file2.getCanonicalPath());
        System.out.println("获取文件名:" + file2.getName());
        System.out.println("获取父目录:" + file2.getParent());
        System.out.println("获取路径名:" + file2.getPath());
        System.out.println("是否是标准文件" + file2.isFile());
        System.out.println("是否为隐藏文件:" + file2.isHidden());
        System.out.println("文件长度:" + file2.length());
        System.out.println("最后一次被修改的时间:" + new Date(file2.lastModified()));
        //重属名(剪切) 并删除
        File newFile = new File("d:\\b.txt") ;
        System.out.println("重属名:" + file2.renameTo(newFile)) ;
        File new2 = new File("d:\\迅雷下载\\c.txt");
        System.out.println("剪切:" + newFile.renameTo(new2));
        System.out.println("直接删除:" + new2.delete());
        //退出jvm删除
        file2.deleteOnExit();
    }

示例代码二:(目录操作)

public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        String path = "d:\\aaa" ;
        File f = new File(path) ;
        //创建单级文件夹
        if (!f.exists()) {
            System.out.println("创建文件夹:" + f.mkdir()) ;
        }else {
            System.out.println("文件夹已存在");
        }
        //创建多级文件夹
        File f2 = new File("d:\\aaa\\bbb\\ccc") ;
        if (!f2.exists()) {
            System.out.println("创建文件夹:" + f2.mkdirs()) ;
        }else {
            System.out.println("文件夹已存在");
        }
        //获取
        System.out.println("绝对路径:" + f2.getAbsolutePath());
        System.out.println("标准路径:" + f2.getCanonicalPath());
        System.out.println("文件夹名:" + f2.getName());
        System.out.println("字符串路径名:" + f2.getPath());
        System.out.println("父目录:" + f2.getParent());
        System.out.println("获取路径名:" + f2.getPath());
        System.out.println("是否是标准文件" + f2.isFile());
        System.out.println("是否为隐藏文件:" + f2.isHidden());
        System.out.println("文件长度:" + f2.length());
        System.out.println("最后一次被修改的时间:" + new Date(f2.lastModified()));
    }

三、综合应用
实例一:递归输出给定目录里的所有文件,要求分级缩进

//递归遍历所有文件
public static void listFileTest(File file,int n) { //file指定目录,n当前级别
        if (file != null) {
            if (file.isDirectory()) {
                System.out.println(print(n++) + file.getName());
                File[] files = file.listFiles() ;
                for (File file2 : files) {
                    listFileTest(file2,n);
                }
            }else {
                System.out.println(print(n) + file.getName());
            }   
        }
    }
    //分级缩进
    public static String print(int n) {
        StringBuffer s = new StringBuffer() ;
        s.append("|_") ;
        for(int i=0; i<n; i++) {
            s.append("__") ;
        }
        return s.toString();
    }

实例二:批量修改文件名

/**
     * 批量修改文件名
     * @param dest
     */
    public static void renameToTest(File dest) { //传入需要操作的目录
        File[] f = dest.listFiles() ;   //返回目录里所有文件的File对象
        for(int i=0 ;i < f.length; i++) {
            String[] s2 = f[i].getName().split("[.]") ; //根据‘.’分割文件名与后缀名
            //使用新的文件名与对应的后缀名连接形成新的文件路径
            String newPath = dest.getPath() + File.separatorChar + i + "." + s2[s2.length - 1] ;
            f[i].renameTo(new File(newPath)); //将文件名更改为新的文件名
        }
    }

实例三:递归删除非空目录

public static void main(String[] args) {
        // TODO Auto-generated method stub
        File file = new File("d:\\aaa") ;
        deleteDirectory(file);
        System.out.println("删除成功");
    }
    public static void deleteDirectory(File f) {
        if (f.length() != 0) {
            if (f.isDirectory()) {
                for (File fi : f.listFiles()) {
                    deleteDirectory(fi);
                }
            }
        }
        f.delete() ;
    }

实例四:文件的复制

File 类不提供文件的复制操作,要想实现需要用到IO操作,本章节暂不介绍 IO总结再给出代码

猜你喜欢

转载自blog.csdn.net/lyf1997115/article/details/81675881