天天看点

【javase复习】## day9 IO---- File类 ##

IO流

主要的作用是解决设备与设备之间 的数据传输问题。

数据一般是以 文件的形式保存在硬盘上

所以引出 File类~~

File类:描述一个 文件或者文件夹

File类的构造方法:

File(String pathname)  指定文件或者文件夹的路径创建一个File文件。

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

File(String parent, String child) 
           
public class rrr {
    public static void main(String[] args) {
        File f = new File("E:\\a.txt");
        System.out.println(f.exists());    //File(String pathname) 


        File parentfile = new File("E:\\");       //File(File parent, String child)
        File child =  new File(parentfile,"a.txt");
        System.out.println(child.exists());

        File ff = new File("E:\\","a.txt");     //File(String parent, String child) 
        System.out.println(ff.exists());



    }

}
           

注意一下:

windows的目录分隔符是 \ 其实/也认识,而且只需要写1个 不用转义

linux的目录分隔符是 /

File的 static String separator 常量确定了系统的分隔符

在不同系统打印出来不一样的。

文件的路径有:

绝对路径: 不解释! getAbsolutePath ()可以获取文件对象的绝对路径

相对路径: 相对于程序当前所在路径, 用. ..等拼凑出来!!,可以用如下方法获得程序当前路径!!注意:当前路径和目标文件不在一个盘下面是写不了相对路径的!!!! 因为退到计算机层,后面就是绝对路径了。

File f = new File(".");
        System.out.println(f.getAbsolutePath());
           

所以文件也可以用相对路径表示, 即省略不写当前路径

File f = new File(".");
        System.out.println(f.getAbsolutePath());//获取当路径
        File ff =new File("src/b.txt");      //只写相对路径。
        System.out.println(ff.exists());  
           

File类常用方法:::

创建方法:

createNewFile() 在指定位置创建一个空文件,成功就返回true,如果已存在就不创建然后返回false

mkdir() 在指定位置创建目录,这只会创建最后一级目录,如果上级目录不存在就抛异常。

mkdirs() 在指定位置创建目录,这会创建路径中所有不存在的目录。 renameTo(File

dest) 重命名文件或文件夹,也可以操作非空的文件夹,文件不同时相当于文件的剪切!!!剪切时候不能操作文件夹。移动/重命名成功则返回true,失败则返回false。

用代码演示一下:

public static void main(String[] args) throws IOException {
        File f = new File("E:/q.txt");
        System.out.println(f.createNewFile());

        File ff = new File("E:/新文件夹");
        File fff = new File("E:/第一层/第二层");

        System.out.println("创建文件夹"+ff.mkdir());
        System.out.println("又创建一次同名文件夹"+ff.mkdir());
        System.out.println("用mkdir方法创建多级文件夹"+fff.mkdir());

        System.out.println("用mkdirs方法创建多级文件夹"+fff.mkdirs());



    }
           

true

创建文件夹true

又创建一次同名文件夹false

用mkdir方法创建多级文件夹false

用mkdirs方法创建多级文件夹true

①删除方法

delete() 删除文件或一个空文件夹,如果是文件夹且不为空,则不能删除,成功返回true,失败返回false。

deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录,保证程序异常时创建的临时文件也可以被删除

②判断方法:

exists() 文件或文件夹是否存在。

isFile() 是否是一个文件,如果不存在,则始终为false。

isDirectory() 是否是一个目录,如果不存在,则始终为false。

isHidden() 是否是一个隐藏的文件或是否是隐藏的目录。 isAbsolute() 测试此抽象路径名是否为绝对路径名。

③获取方法 :

getName() 获取文件或文件夹的名称,不包含上级路径。

getPath() 返回绝对路径,可以是相对路径,但是目录要指定

getAbsolutePath() 获取文件的绝对路径,与文件是否存在没关系

length() 获取文件的大小(字节数),如果文件不存在则返回0L,如果是文件夹也返回0L。

getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null。

lastModified() 获取最后一次被修改的时间。(Date对象 毫秒值) 用SimpleDateFormat的format可以转换成时间字符串

文件夹相关:

staic File[] listRoots() 列出所有的根目录(Window中就是所有系统的盘符)

list() 返回目录下的文件或者目录名,包含隐藏文件。对于文件这样操作会返回null。 ——-返回String数组!!所以只是返回文件名字!

listFiles() 返回目录下的文件或者目录对象(File类实例),包含隐藏文件。对于文件这样操作会返回null。————–返回File数组!!都是File对象!!

list(FilenameFilter filter) 返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。

listFiles(FilenameFilter filter) 返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。

特别关注一下最后一个方法!!

listFiles(FilenameFilter filter) 返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。

要使用这个方法 需要一个自定义类,实现FilenameFilter 接口,重写accept方法。

【javase复习】## day9 IO---- File类 ##
class MyFilter implements FilenameFilter{

    @Override
    public boolean accept(File dir, String name) {
        //System.out.println("文件夹:"+dir+" 文件名:"+ name);
        return name.endsWith(".java");
    }

}



public class Demo7 {

    public static void main(String[] args) {
        File dir = new File("F:\\1208\\day06\\代码\\day06");
        listJava2(dir);

    }

    public static void listJava2(File dir){
        File[] files = dir.listFiles(new MyFilter()); //得到文件夹下面的所有以java结尾的子文件与文件夹。
        for(File file : files){
            System.out.println(file.getName());
        }
    }