【204天】黑马程序员27天视频学习笔记【Day19-下】
叨逼叨两句
- 今天一下敲定了好几件事,不错不错,离全部完事越来越快了,哈哈 
- 今天七夕,提前精心准备的礼物让她很开心,我也很高兴,果然,即便在一起的概率很低,但和她的交谈依然能给我那种发自内心的快乐,这就是爱情吧。 
- 我一定要出人头地,完成对她的所有承诺。 
- 从小目标做起,用5年赚第一个100万。 
19-14:File类的概述和构造方法
- File更应该称之为路径 
- File有绝对路径和相对路径 
- File构造方法 - 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()); } }- 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()); } }- 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类的功能
创建
- public boolean createNewFile():创建文件,如果没有这个文件返回true并创建,如果有这个文件了就返回false不再创建。 
- public boolean mkdir():创建单级文件夹,如果存在这样的文件夹,就返回false不创建了,如果不存在这样的文件夹,就返回true并创建。 
- 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());
    }
}重命名
- 重命名在相同路径下,就是改名;在不同路径下,就是改名并剪切。 
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));
        
    }
}删除
- 删除不走回收站 
- 删除文件夹时,文件夹必须是空的,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());
        
    }
}判断
- public boolean isDirectory():判断是否为目录 
- public boolean isFile():判断是否是文件 
- public boolean exists():判断是否存在 
- public boolean canRead():判断是否可读 
- public boolean canWriter():判断是否可写 
- public boolean isHidden():判断是否隐藏 
- windows系统中,认为所有文件都是可读的,所以你用setReadable设置为false没有用。Linux则有用。 
- 可读不是单纯的指可以打开文件,而是指能用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());
    }
}获取
- public String getAbsolutePath():获取绝对路径 
- public String getPath():获取路径 
- public String getName():获取名称 
- public long length():获取长度【字节数】 
- public long lastModified():获取最后一次的修改时间,毫秒值 
- public String[] list():获取指定目录下的所有文件或者文件夹的名称数组 
- 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);
        }
    }
} 