• JAVA File类


    什么是File类?

    File类是java.io包下的一个类,可以用来操作文件和目录,比如新建,删除,重命名文件或文件夹,读取文件或文件夹的基本信息(文件最后修改时间等等),但是File不能访问文件内容,必须用IO流才可以访问或修改文件内容.

    正式开始之前,先做一个名称的约定

    File类的构造方法

    重点:

    1.File对象的路径只是一个路径的映射(抽象路径),并不是真的有对应的文件夹和文件了,文件夹和文件必须要用File对象调用方法生成才行.

    2.如果pathname没有写绝对路径(比如"C:/test/readme.txt"),而是相对路径("test/readme.txt"),那么File的路径就会映射到项目的根目录下.

    3.创建对象时,路径分隔符用正斜杠(/)或者反斜杠(\)都可以,会自动换成反斜杠()的,不能直接在代码中写反斜杠()!  tips:Java中\等于\,因为是转义符啦~~~

    public File(String pathname) : 传入抽象路径,生成一个File对象 例如:pathname="C:/test/readme.txt"

    public File(String parent, String child) : 例:parent="C:/test/",   child="readme.txt"; parent不能指定到文件,只能到文件夹

    public File(File parent, String child) : 类似上边的

    public File(URI uri) : 传入URI,生成File对象,什么是URI : 可以用File对象的toURI()方法生成一个URI自己看看

    随便举个例子

    File file = new File("C:/test/readme.txt");
    //创建File对象时并不会生成对应路径的目录和文件(夹).

    各种get方法

    public String getName() : 获取文件名(即 '文件(夹)')

    public String getParent() : 获取目录(原路径去除掉getName()的值)

    public File getParentFile() : 获取以getParent()为路径的File对象

    public String getPath() : 原样获取File对象的路径(写什么返回什么)

    public String getAbsolutePath() : 返回绝对路径

    public String getCanonicalPath() : 返回绝对路径的同时,简化路径名(去除掉./或者../这种类型的路径, 不明白的话看下边示例)

    public File getAbsoluteFile() : 获取以getAbsolutePath()为路径的File对象

    public File getCanonicalFile() : 获取以getCanonicalPath()为路径的File对象

    File file = new File("aaa/bbb/ccc/ddd/.././abc.txt");
    file.getParentFile().mkdirs();  //创建abc.txt父级的目录
    file.createNewFile();  //创建abc.txt文件
    System.out.println(file.getName());  //abc.txt
    System.out.println(file.getParent());  //aaabbcccddd...
    System.out.println(file.getParentFile());  //aaabbcccddd...
    System.out.println(file.getPath());  //aaabbcccddd...abc.txt
    System.out.println(file.getAbsolutePath());  //C:Usersjyheseclipse-workspacefamilyaaabbcccddd...abc.txt
    System.out.println(file.getCanonicalPath());  //C:Usersjyheseclipse-workspacefamilyaaabbcccabc.txt
    System.out.println(file.getAbsoluteFile());  //C:Usersjyheseclipse-workspacefamilyaaabbcccddd...abc.txt
    System.out.println(file.getCanonicalFile());  //C:Usersjyheseclipse-workspacefamilyaaabbcccabc.txt
    
    //File重写了toString()方法,所以打印file对象时是打印file的路径
    //注意,file对象的路径用的是正斜杠,而打印出来的是反斜杠,因为windows路径是用反斜杠分隔的,

    判断相关方法

    public boolean isAbsolute()

    public boolean isDirectory()

    public boolean isFile()

    public boolean isHidden()

    不做赘述

    增删改相关方法

    重点

    1.mkdir()和mkdirs()不会识别文件后缀,统统创建成文件夹!

    2.createNewFile()不管有没有后缀,统统创建成文件!

    3.delete()删除文件夹时如果文件夹内有文件或文件夹,则不能删除

    4.对于所有增删改方法,操作的都是路径中的文件(夹),比如 "C:/aaa/bbb/ccc.txt",ccc.txt前边的统统算作是目录!

    public boolean mkdir() : 按照路径(path)创建文件夹("C:/aaa/bbb/abc.txt" 如果aaa或bbb目录不存在,则方法不起作用,如aaa,bbb都存在,才能创建abc.txt文件夹)

    public boolean mkdirs() : 按照路径(path)创建文件夹("C:/aaa/bbb/ccc/abc.txt" 不管aaa, bbb, ccc文件夹是否存在,都按照路径正常创建文件夹,缺少的文件夹都会一并创建)

    public boolean createNewFile() : 创建路径中的文件,如果目录不存在,则报错找不到指定路径

    public boolean delete() : 删除文件(夹) (删除文件:直接删除    删除文件夹:如果文件夹下有文件或文件夹,则方法不起作用)

    public void deleteOnExit() : 程序退出时再删除

    public boolean renameTo(File dest) : 把文件(夹)重命名成dest路径中文件(夹)的名字,如果是不同目录的路径,则不起作用.

    List方法

    public String[] list() : 把路径下所有的文件或文件夹的名字做成String数组并返回

    public String[] list(FilenameFilter filter) : 跟list()方法相同,但只取FilenameFilter过滤后的内容

    public File[] listFiles() : 用路径下所有的文件或文件夹的路径,做成一个File数组,并返回

    public File[] listFiles(FilenameFilter filter) : 跟listFiles()方法相同,但只取FilenameFilter过滤后的内容

    public File[] listFiles(FileFilter filter) : 跟listFiles()方法相同,但只取FileFilter过滤后的内容

    FileFilter 和FilenameFilter是函数式接口,可以用Lambda表达式

    其他方法

    public URI toURI()

    设置是否可读,可执行,可写入,最近修改时间等方法省略...

    递归清空文件夹

    	//先在C:/test/目录下创建好多个文件夹和文件
            File deleteFile = new File("c:/test/");
    	@Test
    	public void fileDelete() {
    		deleteAllFiles(deleteFile);
    		return;
    	}
    	public void deleteAllFiles(File file) {
    		File[] listFiles = file.listFiles();
    		for (int i = 0; i < listFiles.length; i++) {
    			if(listFiles[i].isDirectory()) {
    				deleteAllFiles(listFiles[i]);
    			}
    			listFiles[i].delete();
    		}
    	}
    

      

  • 相关阅读:
    pandas之数据读取
    pandas之简单数据统计描述
    人脸识别
    图像识别之物体识别
    图像识别之特征点检测
    图像识别之角点检测
    图像识别之边缘识别
    爬取企查查网站中安徽省内的企业数据信息
    民政局中行政区域数据爬取
    有道翻译和百度翻译在线爬取
  • 原文地址:https://www.cnblogs.com/jinyu59/p/10741407.html
Copyright © 2020-2023  润新知