【204天】黑马程序员27天视频学习笔记【Day19-下】

taoxiuyi0 2019-06-21

叨逼叨两句

  1. 今天一下敲定了好几件事,不错不错,离全部完事越来越快了,哈哈

  2. 今天七夕,提前精心准备的礼物让她很开心,我也很高兴,果然,即便在一起的概率很低,但和她的交谈依然能给我那种发自内心的快乐,这就是爱情吧。

  3. 我一定要出人头地,完成对她的所有承诺。

  4. 从小目标做起,用5年赚第一个100万。

19-14:File类的概述和构造方法

  1. File更应该称之为路径

  2. File有绝对路径和相对路径

  3. File构造方法

    1. File(String pathname):根据一个路径得到File对象

    package com.test.demo001;
    
    import java.io.File;
    
    public class Demo009 {
        public static void main(String[] args) {
            File file = new File("src/com/test/demo001/ss");
            //windows系统的文件路径用\【字符串中加转义字符\,即"src\\com\\test\\demo001\\ss"】
            //mac使用/
            System.out.println(file.exists());
            
            File file2 = new File("src/xx.txt");
            System.out.println(file2.exists());
    
            File file3 = new File("kk");
            System.out.println(file3.exists());
    
            File file4 = new File("kk.txt");
            System.out.println(file4.exists());    
        }
    }
    1. File(String parent,String child):根据一个目录和一个子文件/目录得到File对象

    package com.test.demo001;
    
    import java.io.File;
    
    public class Demo009 {
        public static void main(String[] args) {
            File file = new File("/Users/wangtao/GitHub/mycode/Test_Regex/src/xx.txt");
            System.out.println(file.exists());
            
            String parent = "/Users/wangtao/GitHub/mycode/Test_Regex/src/";
            String child = "xx.txt";
            File file1 = new File(parent,child);
            System.out.println(file1.exists());
        }
    }
    1. File(File parent,String child) :根据一个父File对象和一个子文件/目录得到File对象

    package com.test.demo001;
    
    import java.io.File;
    
    public class Demo009 {
        public static void main(String[] args) {
            File file = new File("/Users/wangtao/GitHub/mycode/Test_Regex/src/xx.txt");
            System.out.println(file.exists());
            
            //将parent封装成File对象可以使用File的方法,比直接让它是个字符串要好
            File parent2 = new File("/Users/wangtao/GitHub/mycode/Test_Regex/src/");
            String child2 = "xx.txt";
            File file2 = new File(parent2,child2);
            System.out.println(file2.exists());
            System.out.println(parent2.exists());
        }
    }

19-(15-18):File类的功能

创建

  1. public boolean createNewFile():创建文件,如果没有这个文件返回true并创建,如果有这个文件了就返回false不再创建。

  2. public boolean mkdir():创建单级文件夹,如果存在这样的文件夹,就返回false不创建了,如果不存在这样的文件夹,就返回true并创建。

  3. public boolean mkdirs():创建多级文件夹,父文件夹若不存在会被创建出来。

package com.test.demo001;

import java.io.File;
import java.io.IOException;

public class Demo009 {
    public static void main(String[] args) throws IOException{
        File file = new File("aaa.txt");
        System.out.println(file.createNewFile());
        
        File file2 = new File("aaa");
        System.out.println(file2.mkdir());
        
        File file3 = new File("sss/ddd/fff/");
        System.out.println(file3.mkdirs());
    }
}

重命名

  1. 重命名在相同路径下,就是改名;在不同路径下,就是改名并剪切。

package com.test.demo001;

import java.io.File;
import java.io.IOException;

public class Demo009 {
    public static void main(String[] args) throws IOException{
        //相同路径下
        //重命名文件
        File file1 = new File("aaa.txt");
        File file2 = new File("ZZZ.txt");
        System.out.println(file1.renameTo(file2));
        //重命名文件夹
        File file3 = new File("aaa");
        File file4 = new File("ZZZ");
        System.out.println(file3.renameTo(file4));
        
        //不同路径下
        //重命名文件
        File file5 = new File("ZZZ.txt");
        File file6 = new File("src/com/test/demo001/OOO.txt");
        System.out.println(file5.renameTo(file6));
        
        //重命名文件夹
        File file7 = new File("ZZZ");
        File file8 = new File("src/com/test/demo001/lll");
        System.out.println(file7.renameTo(file8));
        
    }
}

删除

  1. 删除不走回收站

  2. 删除文件夹时,文件夹必须是空的,windows系统能删带文件的文件夹,是因为它做了一个遍历

package com.test.demo001;

import java.io.File;
import java.io.IOException;

public class Demo009 {
    public static void main(String[] args) throws IOException{
        File file1 = new File("src/com/test/demo001/ss");
        System.out.println(file1.delete());
        
        File file2 = new File("sss");
        System.out.println(file2.delete());
        
    }
}

判断

  1. public boolean isDirectory():判断是否为目录

  2. public boolean isFile():判断是否是文件

  3. public boolean exists():判断是否存在

  4. public boolean canRead():判断是否可读

  5. public boolean canWriter():判断是否可写

  6. public boolean isHidden():判断是否隐藏

  1. windows系统中,认为所有文件都是可读的,所以你用setReadable设置为false没有用。Linux则有用。

  2. 可读不是单纯的指可以打开文件,而是指能用IO流读取文件。

package com.test.demo001;

import java.io.File;
import java.io.IOException;

public class Demo009 {
    public static void main(String[] args) throws IOException{
        File file1 = new File("kk");
        System.out.println(file1.isDirectory());
        System.out.println(file1.isFile());
        System.out.println(file1.exists());
        file1.setReadable(false);
        System.out.println(file1.canRead());
        file1.setWritable(true);
        System.out.println(file1.canWrite());
        System.out.println(file1.isHidden());
    }
}

获取

  1. public String getAbsolutePath():获取绝对路径

  2. public String getPath():获取路径

  3. public String getName():获取名称

  4. public long length():获取长度【字节数】

  5. public long lastModified():获取最后一次的修改时间,毫秒值

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

  7. public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组

package com.test.demo001;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo009 {
    public static void main(String[] args) {
        File file = new File("kk");
        File file2 = new File("/Users/wangtao/GitHub/mycode/Test_Regex/kk");
//        System.out.println(file.getAbsolutePath());
//        System.out.println(file2.getAbsolutePath());
        
//        System.out.println(file.getPath());
//        System.out.println(file2.getPath());
        
//        System.out.println(file.getName());
//        System.out.println(file2.getName());
        
//        System.out.println(file.length());
        
//        System.out.println(file.lastModified());
//        
//        Date d = new Date(file.lastModified());
//        System.out.println(d);
//        
//        SimpleDateFormat sdf = new SimpleDateFormat("YYYY年MM月dd日 HH:mm:ss");
//        System.out.println(sdf.format(d));

        File file3 = new File("src/com/test/demo001");
        String[] str = file3.list();
        for (String s : str) {
            System.out.println(s);
        }
        
        File file4 = new File("src/com/test/demo001");
        File[] files = file4.listFiles();
        for (File f : files) {
            System.out.println(f);
        }
        
        File file5 = new File("src/com/test/demo001/Demo002.java");
        System.out.println(file5.getAbsolutePath());
        
        
        
    }
}

19-19:输出指定目录下指定后缀的文件名

学递归时再搞定这个知识点

19-20:文件名称过滤器的概述及使用

package com.test.demo001;

import java.io.File;
import java.io.FilenameFilter;

public class Demo009 {
    public static void main(String[] args) {
        File file = new File("src/com/test/demo001/");
        String[] arr = file.list(new FilenameFilter(){
            public boolean accept(File dir,String name){
                File file = new File(dir,name);
                return file.isFile()&&file.getName().endsWith(".txt");//只有return true的才能装进数组
            }
        });
    
        for (String s : arr) {
            System.out.println(s);
        }
    }
}

相关推荐