File类的使用

1 File类的概念

  • java.io.File类是文件或文件目录路径的抽象表示形式,和平台无关。
  • File类能创建、删除、重命名文件和目录,但File类不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
  • 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象与之对应,但是Java程序中的File对象,可能没有一个真实存在的文件或目录。
  • File对象可以作为参数传递给流的构造器。

 

2 File类的构造器

  • 根据路径(相对路径和绝对路径)创建File对象。
public File(String pathname){}

 

  • 示例:
package day19;

import java.io.File;

/**
 * @motto: 一身转战三千里,一剑可当百万兵。
 * @author: 不为往事扰,余生只爱笑。
 * @version: 1.0
 * @since: 2019-06-30
 */
public class FileTest {
    public static void main(String[] args) {
        File file = new File("D:\\a.txt");
    }
}

 

  • 以parent为父路径,child为子路径创建File对象。
public File(String parent, String child){}

 

  • 示例:
package day19;

import java.io.File;

/**
 * @motto: 一身转战三千里,一剑可当百万兵。
 * @author: 不为往事扰,余生只爱笑。
 * @version: 1.0
 * @since: 2019-06-30
 */
public class FileTest {
    public static void main(String[] args) {
       File file = new File("D:\\","a.txt");
    }
}

 

  • 根据一个父File对象和子文件路径创建File对象。
public File(File parent, String child){}

 

  • 示例:
package day19;

import java.io.File;

/**
 * @motto: 一身转战三千里,一剑可当百万兵。
 * @author: 不为往事扰,余生只爱笑。
 * @version: 1.0
 * @since: 2019-06-30
 */
public class FileTest {
    public static void main(String[] args) {
       File file = new File(new File("D:\\"),"a.txt");
    }
}

 

3 File类的路径分隔符

  • 路径中的每级目录之间使用路径分割符隔开。
  • 路径分隔符和系统有关:
    • Windows和DOS系统默认使用"\"来表示。
    • UNIX使用“/”来表示、  
  • Java程序支持跨平台运行,因此路径分隔符要慎用。
  • 为了解决不同平台的路径分隔符不同,File提供了一个常量,来表示路径分隔符。
public static final String separator = "" + separatorChar;

 

4 File类的常用方法

  •  获取绝对路径:
public String getAbsolutePath(){}

 

  • 示例:
package day19;

import java.io.File;

/**
 * @motto: 一身转战三千里,一剑可当百万兵。
 * @author: 不为往事扰,余生只爱笑。
 * @version: 1.0
 * @since: 2019-06-30
 */
public class FileTest {
    public static void main(String[] args) {
       File file = new File(new File("D:\\"),"a.txt");

        System.out.println("获取绝对路径:" + file.getAbsolutePath());//实际情况下,此文件或目录是否存在,并不重要
    }
}

 

  • 获取路径:
public String getPath(){}

 

  • 示例:
package day19;

import java.io.File;

/**
 * @motto: 一身转战三千里,一剑可当百万兵。
 * @author: 不为往事扰,余生只爱笑。
 * @version: 1.0
 * @since: 2019-06-30
 */
public class FileTest {
    public static void main(String[] args) {
       File file = new File(new File("D:\\"),"a.txt");

        System.out.println("获取路径:" + file.getPath());//此处的路径,是指File构造器中的路径(相对路径或绝对路径),实际情况下,文件或目录是否存在,对此方法而言,并不重要
    }
}

 

  • 获取名称:
package day19;

import java.io.File;

/**
 * @motto: 一身转战三千里,一剑可当百万兵。
 * @author: 不为往事扰,余生只爱笑。
 * @version: 1.0
 * @since: 2019-06-30
 */
public class FileTest {
    public static void main(String[] args) {
       File file = new File(new File("D:\\"),"c.txt");

        System.out.println("获取名称:" + file.getName());//此处的名称,仅仅是表示File构造器中文件或目录的名称,实际文件或目录是否存在,对此方法来说,并不重要
    }
}

 

  • 获取文件或目录的上层路径(如果没有,返回null):
public String getParent(){}

 

  • 示例:
package day19;

import java.io.File;

/**
 * @motto: 一身转战三千里,一剑可当百万兵。
 * @author: 不为往事扰,余生只爱笑。
 * @version: 1.0
 * @since: 2019-06-30
 */
public class FileTest {
    public static void main(String[] args) {
        File file = new File(new File("D:\\"), "c.txt");
        System.out.println("获取上层文件或目录的路径:" + file.getParent());
    }
}

 

  • 获取文件的长度(即字节数,如果文件不存在,返回0,不能获取目录的长度):
public long length(){}

 

  • 示例:
package day19;

import java.io.File;

/**
 * @motto: 一身转战三千里,一剑可当百万兵。
 * @author: 不为往事扰,余生只爱笑。
 * @version: 1.0
 * @since: 2019-06-30
 */
public class FileTest {
    public static void main(String[] args) {
        File file = new File(new File("D:\\"), "c.txt");
        System.out.println("获取文件的长度:" + file.length());
    }
}

 

  • 获取最后一次的修改时间,毫秒值(如果文件不存在,返回0):
public long lastModified(){}

 

  • 示例:
package day19;

import java.io.File;

/**
 * @motto: 一身转战三千里,一剑可当百万兵。
 * @author: 不为往事扰,余生只爱笑。
 * @version: 1.0
 * @since: 2019-06-30
 */
public class FileTest {
    public static void main(String[] args) {
        File file = new File(new File("D:\\"), "c.txt");
        System.out.println("获取最后一次的修改时间:" + file.lastModified());
    }
}

 

  • 获取指定目录下的所有文件或文件目录的名称数组:
public String[] list(){}

 

  • 示例:
package day19;

import java.io.File;

/**
 * @motto: 一身转战三千里,一剑可当百万兵。
 * @author: 不为往事扰,余生只爱笑。
 * @version: 1.0
 * @since: 2019-06-30
 */
public class FileTest {
    public static void main(String[] args) {
        File file = new File("D:\\");
        String[] fileName = file.list();
        for (String name : fileName) {
            System.out.println("指定目录下的文件名:" + name);
        }
    }
}

 

  • 获取指定目录下的所有文件或目录的File数组:
public File[] listFiles(){}

 

  • 示例:
package day19;

import java.io.File;

/**
 * @motto: 一身转战三千里,一剑可当百万兵。
 * @author: 不为往事扰,余生只爱笑。
 * @version: 1.0
 * @since: 2019-06-30
 */
public class FileTest {
    public static void main(String[] args) {
        File[] files = new File("D:\\").listFiles();
        for (File file : files) {
            System.out.println("获取指定目录下的文件或目录的File对象:" + file);
        }
    }
}

 

  • 文件重命名(需要注意的是重命名后的文件的父路径要和重命名前的父路径相同):
public boolean renameTo(File dest){}

 

  • 示例:
package day19;

import java.io.File;

/**
 * @motto: 一身转战三千里,一剑可当百万兵。
 * @author: 不为往事扰,余生只爱笑。
 * @version: 1.0
 * @since: 2019-06-30
 */
public class FileTest {
    public static void main(String[] args) {
        File file = new File("D:\\c.txt");

        boolean flag = file.renameTo(new File(file.getParent(), "b.txt"));
        System.out.println("重命名是否成功:" + flag);
    }
}

 

  • 判断文件或目录是否存在:
public boolean exists(){}

 

  • 示例:
package day19;

import java.io.File;

/**
 * @motto: 一身转战三千里,一剑可当百万兵。
 * @author: 不为往事扰,余生只爱笑。
 * @version: 1.0
 * @since: 2019-06-30
 */
public class FileTest {
    public static void main(String[] args) {
        File file = new File("D:\\b.txt");

        System.out.println("判断文件或目录是否存在:" + file.exists());
    }
}

 

  • 判断是否为目录:
public boolean isDirectory(){}

 

  • 示例:
package day19;

import java.io.File;

/**
 * @motto: 一身转战三千里,一剑可当百万兵。
 * @author: 不为往事扰,余生只爱笑。
 * @version: 1.0
 * @since: 2019-06-30
 */
public class FileTest {
    public static void main(String[] args) {
        File file = new File("D:\\b.txt");

        if(file.exists()){
            System.out.println("判断是否为目录:" + file.isDirectory());
        }
    }
}

 

  • 判断是否为文件:
public boolean isFile(){}

 

  • 示例:
package day19;

import java.io.File;

/**
 * @motto: 一身转战三千里,一剑可当百万兵。
 * @author: 不为往事扰,余生只爱笑。
 * @version: 1.0
 * @since: 2019-06-30
 */
public class FileTest {
    public static void main(String[] args) {
        File file = new File("D:\\c.txt");

        if(file.exists()){
            System.out.println("判断是否为文件:" + file.isFile());
        }
    }
}

 

  • 判断文件或目录是否可读、可写、隐藏、可执行
public boolean canRead(){}
public boolean canWrite(){}
public boolean isHidden(){}
public boolean canExecute(){}

 

  • 示例:
package day19;

import java.io.File;

/**
 * @motto: 一身转战三千里,一剑可当百万兵。
 * @author: 不为往事扰,余生只爱笑。
 * @version: 1.0
 * @since: 2019-06-30
 */
public class FileTest {
    public static void main(String[] args) {
        File file = new File("D:\\b.txt");

        if(file.exists()){
            System.out.println("文件可读:" + file.canRead());
            System.out.println("文件可写:" + file.canWrite());
            System.out.println("文件可执行:" + file.canExecute());
            System.out.println("文件是否隐藏:" + file.isHidden());
        }
    }
}

 

  • 创建文件(如果文件存在,就不创建,返回false):
public boolean createNewFile() throws IOException{}

 

  • 示例:
package day19;

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

/**
 * @motto: 一身转战三千里,一剑可当百万兵。
 * @author: 不为往事扰,余生只爱笑。
 * @version: 1.0
 * @since: 2019-06-30
 */
public class FileTest {
    public static void main(String[] args) throws IOException {
        File file = new File("D:\\b.txt");

        boolean flag = file.createNewFile();
        System.out.println("是否文件创建成功:" + flag);
    }
}

 

  • 创建目录:
public boolean mkdirs(){}

 

  • 示例:
package day19;

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

/**
 * @motto: 一身转战三千里,一剑可当百万兵。
 * @author: 不为往事扰,余生只爱笑。
 * @version: 1.0
 * @since: 2019-06-30
 */
public class FileTest {
    public static void main(String[] args) throws IOException {
        File file = new File("D:\\abc\\bdc");

        if (!file.exists()) {
            System.out.println("创建多级目录是否成功:" + file.mkdirs());
        }
    }
}

 

  • 文件或目录删除功能(注意不走回收站,如果是多级目录只能删除最里面的目录,而且必须是空目录):
public boolean delete(){}

 

  • 示例:
package day19;

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

/**
 * @motto: 一身转战三千里,一剑可当百万兵。
 * @author: 不为往事扰,余生只爱笑。
 * @version: 1.0
 * @since: 2019-06-30
 */
public class FileTest {
    public static void main(String[] args) throws IOException {
        File file = new File("D:\\abc\\bdc");

        if (!file.exists()) {
            System.out.println("创建多级目录是否成功:" + file.mkdirs());
        }else{
            boolean flag = file.delete();
            System.out.println("是否删除成功:" + flag);
        }
    }
}

 

你可能感兴趣的:(File类的使用)