美文网首页程序员Java
J2SE II一一Java中File的创建和使用

J2SE II一一Java中File的创建和使用

作者: Help_II | 来源:发表于2020-11-26 14:53 被阅读0次

    1.File对象对应你磁盘上的一个文件或者文件夹(路径),一个file对象代表了一个文件或者文件夹的引用,并不是直接物理上的。

    2.File.separator: 连接符
    public static final String separator与系统相关的默认名称 - 分隔符字符,以方便的方式表示为字符串。 该字符串包含一个字符,即separatorChar 。 (public static final char separatorChar与系统相关的默认名称分隔符。 该字段被初始化为包含系统属性值file.separator的第一个file.separator 。 在UNIX系统上,该字段的值为’/’ ; 在Microsoft Windows系统上是’\’ 。 )

    3.创建File实例对象的几种方式
    第一种:

    File file = new File("D:\\abc.txt");
    System.out.println(file);
    

    第二种:

    // parent 前面的路径 chid 在parent 后面追加的目录
    File file2 = new File("D:\c", "abc.txt");
    System.out.println(file2);

    第三种:

       File  parent = new File("D:\\d");
        File file3 = new  File(parent, "qwe.doc");
        System.out.println(file3);
    

    4.创建文件

    //返回的是否创建成功
    try {
    boolean flag = file.createNewFile();
    System.out.println(flag);
    } catch (IOException e) {
    e.printStackTrace();
    }
    5.判断文件是否可读写canRead() canWrite()

        System.out.println(file.canRead());
        // 判断文件是否可写
        System.out.println(file.canWrite());
    

    6 . 判断文件是否存在exists(), 如果不存在则 创建, 存在则不创建了

    if(!file2.exists()){// 判断文件是否存在
    try {
    file2.createNewFile();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }else{
    System.out.println("已经存在了 ");
    }

    7 .创建文件夹 单层mkdir()

        String string = "D:\\d";
        File file = new File(string);
        boolean flag = file.mkdir();// 创建文件夹  单层
        System.out.println(flag);
    

    8 .利用mkdirs 可以同时创建多层目录

    File file2 = new File("D:\d\a\c\w");
    file2.mkdirs();// 利用mkdirs 可以同时创建多层目录

    9 . 如何区分 文件或者是 文件夹

      if(file2.isDirectory()){// 判断是否是文件夹
            System.out.println("是文件夹");
        }
        if(file3.isFile()){
            System.out.println("是文件");
        }
    

    10 . 删除指定文件

        File file2 = new File("D:\\d\\a\\c\\w");    
        File file3 = new File(file2, "abc.txt");
        boolean flag2 = file3.delete();
        System.out.println(flag2);
    

    11 .length()判断文件的长度 而非文件夹的长度 ,返回long类型的

        long l = file3.length();
        System.out.println(l);
    

    12 .得到路径

    File file = new File("D:\d\a\c\w\abc.txt");
    System.out.println(file.getPath());// 得到路径

    13 .System.out.println(file.getParent());// 得到 文件的父目录

    14 . System.out.println(file.getParentFile());// 得到 文件的父目录 返回的是File对象

    15 .// 重命名 被其他 占用的时候 就不能重命名成功

    File file3 = new File("D:\\d\\a\\c\\w\\hehe.txt");
        boolean flag = file.renameTo(file3);
        System.out.println(flag);
    

    16.将文件过滤掉,文件夹保留

    package com.qf.demo2;

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

    /**

    • list() 返回 指定目录 下的 所有 的 目录和文件的名字 String[]
    • list(FilenameFilter filter) 得到的所有的名字 进行对应的过滤
    • listFiles() 返回 指定目录 下的 所有 的 目录和文件的 file 对象表现形式 File[]
    • listFiles(FilenameFilter filter) 得到的所有的名字 进行对应的过滤

    */
    public class Test4 {

    public static void main(String[] args) {
    
        //File file = new  File("D\\java上课内容\\2015新版PPT":);
        File file = new File("D:\\java上课内容");
        String[] strings = file.list();
        /*for (String string : strings) {
            System.out.println(string);
        }
        File[] files = file.listFiles();
        for (File file2 : files) {
            System.out.println(file2);
        }*/
    
    
        String[] strings2 = file.list(new MyFilter());
        for (String string : strings2) {
            System.out.println(string);
        }
    
        File[] file2 = file.listFiles(new MyFilter());
        for (File file3 : file2) {
            System.out.println(file3);
        }
    
    }
    

    }

    class MyFilter implements FilenameFilter{

    // dir 指定的目录        name 是 dir 指定目录下的文件或者是文件夹的名字
    public boolean accept(File dir, String name) {      
    

    // if(name.endsWith(".txt")){
    // return false;
    // }
    // 假如是 文件 就 过滤掉, 如果是文件夹 , 就保留
    // D:\java上课内容 \ java新版ppt
    File file = new File(dir,name);
    if(file.isFile()){
    return false;
    }

        return true;// 返回ture 证明 保留下来的
                    // 返回 false 要被过滤掉的
    }
    

    }

    17 .得到指定文件夹下的所有的文件

    package com.qf.demo2;

    import java.io.File;

    /**

    • 递归
    • 自己调用自己
    • 以此类推
    • 同性质的问题 范围缩小, 直到 结果 可以直接的出来

    需求: 得到指定文件夹下的所有的文件

    计算 指定文件夹 所有文件 和 文件夹的个数

    */
    public class Test5 {

    public static void main(String[] args) {
    
        findFile(new File("D:\\java上课内容"));
    }
    
    // 得到 指定文件夹下一层的所有的文件和文件
    // // 如果是文件  打印输出, 如果文件夹 
    
    public static void  findFile(File file){// 既可以代表文件也可以代表文件夹
        // 保证非空
        if(file != null){
            // 保证是文件夹
            if(!file.isFile()){
                // 得到文件夹下的文件或者是 文件夹了
                File[] files = file.listFiles();// 新版ppt  ppt  .pptx
                for (File file2 : files) {// 把所有的文件和文件夹遍历一遍
                        findFile(file2);// 无论是文件还是文件夹 都可以调用  此方法
                }
            }else{
                System.out.println(file);
            }
        }else{
            System.out.println("闹着玩呢???");
        }
    }
    

    }

    1.错误示范1,输出的是创建文件夹 D:\filepath\test\test.txt。

    public class FileTest {    
    public static void main(String[] args) throws IOException {        
    String fileName = "test.txt";        
    File testFile = new File("D:" + File.separator + "filepath" + File.separator + "test" + File.separator + fileName);        
    if (!testFile.exists()) {            
    testFile.mkdirs();// 能创建多级目录        
    }        
    System.out.println("testFile:"+testFile);   
     }}   
    result--------------------testFile:D:\filepath\test\test.txt
    
    image

    2.错误示范2,如果 D:\filepath\test\ 文件夹不存在,会报错。

    public class FileTest {    
    public static void main(String[] args) throws IOException {       
     String fileName = "test.txt";        
    File testFile = new File("D:" + File.separator + "filepath" + File.separator + "test" + File.separator + fileName);        
    if (!testFile.exists()) {           
     testFile.createNewFile();// 能创建多级目录       
     }        
    System.out.println("testFile:"+testFile);    
    }}
    
    image

    3.实现在多重目录下创建文件:话不多说上正确代码:

    package com.zte.FileTest;
    
    import sun.net.ftp.FtpClient;
    //import com.zte.ums.cnms.pm.load.enums.MppFileDirEnum;
    import java.io.File;
    import java.io.IOException; 
    public class FileTest {    
    public static void main(String[] args) throws IOException {        
    String fileName = "test.txt";        
    System.out.println("File.separator:" + File.separator);        
    File testFile = new File("D:" + File.separator + "filepath" + File.separator + "test" + File.separator + fileName);        
    File fileParent = testFile.getParentFile();
    //返回的是File类型,可以调用exsit()等方法         
    String fileParentPath = testFile.getParent();
    //返回的是String类型        
    System.out.println("fileParent:" + fileParent);        
    System.out.println("fileParentPath:" + fileParentPath);        
    if (!fileParent.exists()) {            
    fileParent.mkdirs();// 能创建多级目录       
     }        
    if (!testFile.exists())            
    testFile.createNewFile();
    //有路径才能创建文件        
    System.out.println(testFile);         
    String path = testFile.getPath();        
    String absolutePath = testFile.getAbsolutePath();
    //得到文件/文件夹的绝对路径        
    String getFileName = testFile.getName();
    //得到文件/文件夹的名字        
    System.out.println("path:"+path);        
    System.out.println("absolutePath:"+absolutePath);        System.out.println("getFileName:"+getFileName);    
    }}    result---------------------------------File.separator:\fileParent:D:\filepath\testfileParentPath:D:\filepath\testD:\filepath\test\test.txtpath:D:\filepath\test\test.txtabsolutePath:D:\filepath\test\test.txtgetFileName:test.txt
    

    File类的常见方法(参考一位大牛的,不小心把链接关了)
    1.创建。
    boolean createNewFile(); //创建文件
    boolean mkdir();创建文件夹
    boolean mkdirs();创建多级文件夹。

    2.删除。
    boolean delete();
    void deleteOnExit();在程序退出时删除文件。

    3.判断。
    boolean canExcute(); 判断是否可执行
    boolean exists(); 文件事是否存在。
    isFile();文件
    isDirectory();文件夹
    isHidden();//java能得到文件中的隐藏文件但是对隐藏文件时不能访问的
    isAbsolute();//绝对路径即时不存在也能得到。
    4.获取信息。
    getName();
    getPath();
    getParent();

    4.三种文件创建方式:
    File file = new File("E:/...");//文件/文件夹路径对象
    File file = new File("..." ,""...);//父目录绝对路径 + 子目录名称
    File file = new File("...","...");//父目录File对象 + 子目录名称

    file.exists():判断文件/文件夹是否存在
    file.delete():删除文件/文件夹
    file.isDirectory():判读是否为目录
    file.isFile():判读是否为文件夹
    file.mkdir():创建文件夹(仅限一级目录)
    file.mkdirs():创建多及目录文件夹(包括但不限一级目录)

    file.createNewFile():创建文件
    file.getAbsolutePath():得到文件/文件夹的绝对路径
    file.getName():得到文件/文件夹的名字
    file.String():同样是得到文件/文件夹的绝对路径等于file.getAbsolutePath()
    file.getParent():得到父目录的绝对路径String 不可以调用可以调用mkdir()方法

    file.getParentFile():得到父目录的绝对路径的返回值是File型可以调用mkdir()方法

    String[] gdir.list():得到目录的子目录\文件的名称(不是绝对路径)
    File[] dir.listFiles():得到目录的子目录\文件事是否存在。

    戳我领取:Java基础资料pdf
    最后的最后,为了节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
    给文章留个小赞,就可以免费领取啦~

    相关文章

      网友评论

        本文标题:J2SE II一一Java中File的创建和使用

        本文链接:https://www.haomeiwen.com/subject/kbiaiktx.html