【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方法。

这里写图片描述

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());
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章