zoukankan      html  css  js  c++  java
  • File总结_day19

    File类总结:
    文件和目录(文件夹)路径名的抽象表示形式,它仅仅是个路径名,存在与不存在,看接下来的操作。反正构造后,就是一个文件名。

    硬盘上除了文件夹,就是只有文件。
    抽象路径名中第一个名称之后的每个名称表示一个目录;最后一个名称既可以表示目录,也可以表示文件。空 抽象路径名没有前缀和名称序列。

    构造方法:
        File(String pathname):根据一个路径得到File对象
        File(String parent, String child):根据一个目录和一个子文件/目录得到File对象
        File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象


    创建功能:
        public boolean createNewFile():创建文件 如果存在这样的文件,就不创建了,返回False
        public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了,返回False
        public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来,如果存在这样的文件夹,返回False

    注意:你到底要创建文件还是文件夹,你最清楚,方法不要调错了。


    删除功能:public boolean delete()
    注意:
          A:如果你创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下。
          B:Java中的删除不走回收站。
          C:要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹


    重命名功能:public boolean renameTo(File dest)
          如果路径名相同,就是改名。
          如果路径名不同,就是改名并剪切。
     
    路径以盘符开始:绝对路径    c:\a.txt
    路径不以盘符开始:相对路径    a.txt
         

    获取功能:
    public String getAbsolutePath():获取绝对路径
    public String getPath():获取相对路径
    public String getName():获取名称
    public long length():获取长度。字节数
    public long lastModified():获取最后一次的修改时间,毫秒值,通过毫秒值能算出时间


    获取功能:
    public String[] list():获取指定目录下的所有文件或者文件夹的名称数组
    public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组




    判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称
     
    分析:
          A:封装e判断目录
          B:获取该目录下所有文件或者文件夹的File数组
          C:遍历该File数组,得到每一个File对象,然后判断
          D:是否是文件
              是:继续判断是否以.jpg结尾
                  是:就输出该文件名称
                  否:不搭理它
              否:不搭理它

    public class FileDemo {
        public static void main(String[] args) {
            // 封装e判断目录
            File file = new File("e:\");
            // 获取该目录下所有文件或者文件夹的File数组
            File[] fileArray = file.listFiles();
            // 遍历该File数组,得到每一个File对象,然后判断
            for (File f : fileArray) {
                // 是否是文件
                if (f.isFile()) {
                    // 继续判断是否以.jpg结尾
                    if (f.getName().endsWith(".jpg")) {
                        // 就输出该文件名称
                        System.out.println(f.getName());
                    }
                }
            }
        }
    }



    判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称
    A:先获取所有的,然后遍历的时候,依次判断,如果满足条件就输出。
    B:获取的时候就已经是满足条件的了,然后输出即可。

    要想实现这个效果,就必须学习一个接口:文件名称过滤器
    public String[] list(FilenameFilter filter)
    public File[] listFiles(FilenameFilter filter)

     public class FileDemo2 {
        public static void main(String[] args) {
            // 封装e判断目录
            File file = new File("e:\");

            // 获取该目录下所有文件或者文件夹的String数组
            // public String[] list(FilenameFilter filter)
            String[] strArray = file.list(new FilenameFilter() { 
                @Override
                public boolean accept(File dir, String name) {//测试指定文件是否应该包含在某一文件列表中,若为False,则不会添加至列表,反之,则添加。可以从源码看出该方法是被遍历所调用的
                    //通过对file.list进行源码查看,发现这个accept方法其实是遍历中每次都要执行的方法,只要此方法为false,就不会添入文件数组。重写此方法,判断是否满足要求。
                    return new File(dir, name).isFile() && name.endsWith(".jpg");
                }
            });
            // 遍历
            for (String s : strArray) {
                System.out.println(s);
            }
        }
    }


    需求:把E:评书三国演义下面的视频名称修改为
          00?_介绍.avi
        
        修改前:// E:评书三国演义三国演义_001_[评书网-今天很高兴,明天就IO了]_桃园三结义.avi
        修改后:// E:评书三国演义01_桃园三结义.avi

        思路:
          A:封装目录
          B:获取该目录下所有的文件的File数组
          C:遍历该File数组,得到每一个File对象
          D:拼接一个新的名称,然后重命名即可。
        
    public class FileDemo {
        public static void main(String[] args) {
            // 封装目录
            File srcFolder = new File("E:\评书\三国演义");

            // 获取该目录下所有的文件的File数组
            File[] fileArray = srcFolder.listFiles();

            // 遍历该File数组,得到每一个File对象
            for (File file : fileArray) {        
                String name = file.getName(); // 三国演义_001_[评书网-今天很高兴,明天就IO了]_桃园三结义.avi
                int index = name.indexOf("_");
                String numberString = name.substring(index + 1, index + 4);
                
                int endIndex = name.lastIndexOf('_');
                String nameString = name.substring(endIndex);
                String newName = numberString.concat(nameString); // 001_桃园三结义.avi
                
                File newFile = new File(srcFolder, newName); // E:\评书\三国演义\001_桃园三结义.avi
                
                // 重命名即可
                file.renameTo(newFile);
            }
        }
    }


  • 相关阅读:
    [py]你真的了解多核处理器吗? 了解多线程
    [py]监控内存并出图
    [py]django强悍的数据库接口(QuerySet API)-增删改查
    【Unity Shaders】Transparency —— 透明的cutoff shader
    使用GDAL库中的RPC校正问题
    celery最佳实践
    Eclipse 快捷方式 指定 固定 workspace
    java 判断是否是周末
    如何设制 select 不可编辑 只读
    golang函数可变参数传递性能问题
  • 原文地址:https://www.cnblogs.com/canceler/p/4625842.html
Copyright © 2011-2022 走看看