zoukankan      html  css  js  c++  java
  • 三十六、Java基础之File类

    一、File类

    import java.io.File;
    import java.io.IOException;
    
    /**
     * 使用IO流读写文件的内容,如果对文件/文件夹操作,可以使用File类
     * 创建File对象
     */
    
    public class Test01 {
        public static void main(String[] args) throws IOException {
            //1.通过File构造方法的参数创建指定路径,File对象可以是文件夹,也可以是文件
            File dir1 = new File("/Users/photo/meinvNo1");
    
            File dir2 = new File("/Users/photo/meinvNo2");
    
            dir1.mkdir();//创建文件夹
            dir2.createNewFile();//创建文件
    
            //通过File构造方法的第一个参数指定的上级目录
            File dir3 = new File("/Users/photo/meinvNo1","sub1");
            File dir4 = new File("/Users/photo/meinvNo1","sub2");
    
            dir3.mkdir();
            dir4.createNewFile();
    
            File dir5 = new File(dir3,"sub3");
            File dir6 = new File(dir3,"sub3");
    
            dir5.mkdir();
            dir6.createNewFile();//创建sub3文件夹,出现了重名现象
    
            //在创建File对象,也可以使用绝对路径
            File dir7 = new File("folder");
    
            dir7.mkdir();
    
    
    
    
        }
    
    }

    输出:

    二、File中的分割符

    import java.io.File;
    
    /**
     * separator文件分割符 与 pathSeparator  路径分割符
     */
    
    public class Test02 {
        public static void main(String[] args) {
    
            System.out.println(File.separator);//  /   在windows中是反斜杠,在其他操作系统中是/
            System.out.println(File.pathSeparator);//  :路径分割符。  win系统中为;
    
    
        }
    }

    三、File类中的常用操作

    /**
     *File类中常用操作:
     * 1、createNewFile :创建一个新的文件
     * 2、delete 删除file对象
     * 3、exists :判断file对象是否存在
     * 4、getAbsoluteFile: 返回file对象的绝对路径形式(返回file对象)
     * 5、getAbsolutePath: 返回file对象的绝对路径
     * 6、getFreeSpace:返回指定盘符的空闲空间大小
     * 7、getName:返回file对象的名称
     * 8、getParent:返回file对象的上一级目录
     * 9、getParentFile:返回file对象的上一级目录(返回的file对象)
     * 10、getPath:返回路径
     * 11、getTotalSpace:返回路径磁盘的总大小
     * 12、getUsableSpace:返回路径磁盘的可用大小
     * 13、isAbsolute:判断是否为绝对路径
     * 14、isDirectory:判断是否为文件夹
     * 15、isFile:判断是否为文件
     * 16、isHidden:判断file是否隐藏
     * 17、lastModified:返回最后一次修改时间,是从1970-01-01 00:00:00 经过的毫秒数
     * 18、list:列出文件夹的内容
     * 19、length:文件的长度
     * 20、list:列出文件夹中的内容(Stirng[])
     * 21、listFiles:列出文件夹中的内容(File[])
     * 22、mkdir:创建文件夹,如果上一级目录不存在,则创建失败
     * 23、mkdirs:创建文件夹,如果上一级目录不存在,先创建上一级目录,在创建当前文件
     * 24、renameTo(File dest):重命名,如果dest对象和当前对象不在同一目录中,相当于文件移动
     * 25、
     */

    例1:

    import java.io.File;
    import java.io.IOException;
    import java.util.Date;
    
    /**
     *File类中常用操作:
     * 1、createNewFile :创建一个新的文件
     * 2、delete 删除file对象
     * 3、exists :判断file对象是否存在
     * 4、getAbsoluteFile: 返回file对象的绝对路径形式(返回file对象)
     * 5、getAbsolutePath: 返回file对象的绝对路径
     * 6、getFreeSpace:返回指定盘符的空闲空间大小
     * 7、getName:返回file对象的名称
     * 8、getParent:返回file对象的上一级目录
     * 9、getParentFile:返回file对象的上一级目录(返回的file对象)
     * 10、getPath:返回路径
     * 11、getTotalSpace:返回路径磁盘的总大小
     * 12、getUsableSpace:返回路径磁盘的可用大小
     * 13、isAbsolute:判断是否为绝对路径
     * 14、isDirectory:判断是否为文件夹
     * 15、isFile:判断是否为文件
     * 16、isHidden:判断file是否隐藏
     * 17、lastModified:返回最后一次修改时间,是从1970-01-01 00:00:00 经过的毫秒数
     * 18、list:列出文件夹的内容
     * 19、length:文件的长度
     * 20、list:列出文件夹中的内容(Stirng[])
     * 21、listFiles:列出文件夹中的内容(File[])
     * 22、mkdir:创建文件夹,如果上一级目录不存在,则创建失败
     * 23、mkdirs:创建文件夹,如果上一级目录不存在,先创建上一级目录,在创建当前文件
     * 24、renameTo(File dest):重命名,如果dest对象和当前对象不在同一目录中,相当于文件移动
     * 25、
     */
    
    public class Test03 {
    
    
        public static void main(String[] args) throws IOException {
    
            File dir = new File("/Users/chushujin/chushujin/photo/meinvNo1");
            //dir.createNewFile();
            //dir.delete();
            dir.exists();
            System.out.println(dir.getAbsoluteFile());
            System.out.println(dir.getAbsolutePath());
            System.out.println(dir.getFreeSpace());
            System.out.println(dir.getName());
            System.out.println(dir.getParent());
            System.out.println(dir.getParentFile());
            System.out.println(dir.getPath());
            System.out.println(dir.getTotalSpace());
            System.out.println(dir.getUsableSpace());
            System.out.println(dir.isAbsolute());
            System.out.println(dir.isDirectory());
            System.out.println(dir.isFile());
            System.out.println(dir.isHidden());
            System.out.println(dir.lastModified());
            System.out.println(new Date(dir.lastModified()));
            System.out.println(dir.list());
            System.out.println(dir.length());
            System.out.println(dir.listFiles());
            System.out.println(dir);
    
    
    
            
        }
    }

    例2

    import java.io.File;
    import java.io.FilenameFilter;
    
    public class Test04 {
    
        public static void main(String[] args){
    
            String folder = "/Users/photo/";
    
            listsubDir1(folder);
            /**
             * out.txt
             * WechatIMG2.jpeg
             * WechatIMG3.jpeg
             * .DS_Store
             * meinvNo1
             * javabak.txt
             * bos.txt
             * input.txt
             * log.txt
             * myjava.java
             * 888.jpg
             * QQ20190615-0.jpg
             * meinvNo2
             * java.java
             * javaauto.txt
             * output.txt
             * zhangsan.txt
             */
            System.out.println("----------------------------------");
            listsubDir2(folder);
            /**
             * /Users/photo/out.txt
             * /Users/photo/WechatIMG2.jpeg
             * /Users/photo/WechatIMG3.jpeg
             * /Users/photo/.DS_Store
             * /Users/photo/meinvNo1
             * /Users/photo/javabak.txt
             * /Users/photo/bos.txt
             * /Users/photo/input.txt
             * /Users/photo/log.txt
             * /Users/photo/myjava.java
             * /Users/photo/888.jpg
             * /Users/photo/QQ20190615-0.jpg
             * /Users/photo/meinvNo2
             * /Users/photo/java.java
             * /Users/photo/javaauto.txt
             * /Users/photo/output.txt
             * /Users/photo/zhangsan.txt
             */
            System.out.println("----------------------------------");
            listsubDir3(folder);
            /**
             * Users/photo/out.txt
             * /Users/photo/javabak.txt
             * /Users/photo/bos.txt
             * /Users/photo/input.txt
             * /Users/photo/log.txt
             * /Users/photo/myjava.java
             * /Users/photo/java.java
             * /Users/photo/javaauto.txt
             * /Users/photo/output.txt
             * /Users/photo/zhangsan.txt
             */
        }
    
        private static void listsubDir3(String folder) {
            File dir = new File(folder);
    
            File[] files = dir.listFiles(new FilenameFilter() {
                //在匿名内部类中重写抽象方法
                @Override
                public boolean accept(File dir, String name) {
                    return name.endsWith(".txt") || name.endsWith("java");
                }
            });
            for (File file:files
                 ) {
                System.out.println(file.getAbsolutePath());
            }
        }
    
        private static void listsubDir1(String folder) {
    
            File dir = new File(folder);
    
            String[] list = dir.list();
    
            for (String str: list
                 ) {
                System.out.println(str);
            }
        }
    
        private static void listsubDir2(String folder) {
    
            File dir = new File(folder);
            File[] files = dir.listFiles();
            for (File file : files
                 ) {
                System.out.println(file.getAbsolutePath());
    
            }
    
        }
    }

     四、将一个文件夹中的所有内容复制到另一新文件夹

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    /**
     *  文件夹的递归显示与复制
     *
     */
    
    public class Test05 {
    
        public static void main(String[] args){
    
            String folder = "/Users/java";
            //文件夹的递归调用
            listsubdir(folder);
            /**
             * /Users/photo/out.txt
             * /Users/photo/WechatIMG2.jpeg
             * /Users/photo/WechatIMG3.jpeg
             * /Users/photo/.DS_Store
             * /Users/photo/meinvNo1
             * /Users/photo/meinvNo1/sub1
             * /Users/photo/meinvNo1/sub1/sub3
             * /Users/photo/meinvNo1/a.txt
             * /Users/photo/meinvNo1/log.java
             * /Users/photo/meinvNo1/sub2
             * /Users/photo/javabak.txt
             * /Users/photo/bos.txt
             * /Users/photo/input.txt
             * /Users/photo/log.txt
             * /Users/photo/myjava.java
             * /Users/photo/888.jpg
             * /Users/photo/QQ20190615-0.jpg
             * /Users/photo/meinvNo2
             * /Users/photo/java.java
             * /Users/photo/javaauto.txt
             * /Users/photo/output.txt
             * /Users/photo/zhangsan.txt
             */
            copyDir(folder,"/Users/java1");
        }
    
        private static void copyDir(String srcFolder, String destFolder) {
    
            //判断目标文件夹是否存在,如果不存在,需要创建新的文件夹
            File dest = new File(destFolder);
            if (!dest.exists()){
                dest.mkdir();
            }
    
            // 遍历srcFolder中的文件,复制到destFolder中
            File src = new File(srcFolder);
            File[] files = src.listFiles();
            for (File file: files
                 ) {
                //如果是文件夹,先在destFile中创建新的文件夹,如果是文件,直接复制
                if (file.isDirectory()){
                    
                    //先需要知道要创建的文件名
                    File destsubDir = new File(destFolder,file.getName());
                    destsubDir.mkdir();
                    //复制文件
                    copyDir(file.getAbsolutePath(),destsubDir.getAbsolutePath());
    
                }else{
                    //直接复制
                    File destFile = new File(destFolder,file.getName());
                    copyFile(file,destFile);//复制文件
                }
            }
    
    
        }
    
        private static void copyFile(File srcFile,File destFile){
    
    
    
            FileInputStream fis  = null;
            FileOutputStream fos = null;
            try {
                fis = new FileInputStream(srcFile);
                fos = new FileOutputStream(destFile);
    
                byte[] bytes = new byte[8];
    
                int len = fis.read(bytes);
                while(len != -1 ){
    
                    fos.write(bytes,0,len);
                    len=fis.read(bytes);
    
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (fis !=null) {
                    try {
                        fis.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (fos !=null) {
                    try {
                        fos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
    
    
    
        }
    
        private static void listsubdir(String folder) {
    
            File dir = new File(folder);
    
            File[] files = dir.listFiles();
            for (File file : files
                 ) {
                System.out.println(file.getAbsolutePath());
                if (file.isDirectory()){
                    listsubdir(file.getAbsolutePath());//递归调用
                }
            }
        }
    }
  • 相关阅读:
    GC 的认识
    SSRF 攻击技术
    文件包含漏洞
    文件的上传和下载
    XSS
    SQL注入工具 sqlmap
    自动化测试框架
    mac配置环境变量
    pycharm与git想集成 上传下载代码
    测试人员需要掌握的linux基本操作
  • 原文地址:https://www.cnblogs.com/chushujin/p/11562569.html
Copyright © 2011-2022 走看看