zoukankan      html  css  js  c++  java
  • 初学File类

    对File类的基本方法的理解
    

    今天刚开始学了File类
    一开始看思想编程看得迷迷糊糊的,之后受不了了,直接去看API文档
    归纳:
    File->java.util
    File类的主要方法:

    构造方法:
    File(String pathname)
    File(String parent,String child) 顾名思义 parentchild
    File(File parent,String child) 顾名思义 parentchild
    隐藏文件可以被获取也一定会被获取

    1.创建:
    (1)创建文件:
    - createNewFile():boolean
    在当前目录下创建抽象名称的文件
    - createTempFile():boolean
    在默认临时文件夹(在windows中为C:Users用户名AppDataLocalTemp)下创建抽象名称的文件
    - createTempFile(String prefix,String suffix):boolean
    相当于createTempFile(String prefix,String suffix,null);
    顾名思义创建prefix.suffix
    在指定目录(dif所储存的抽象路径)创建文件
    (2)创建文件夹:
    - mkdir:boolean
    创建最后一级目录(若parent目录不存在,则不创建,返回false)
    - mkdirs:boolean
    创建多级目录

    2.获取信息
    (1)获取文件的属性:
    canxxxx:boolean (xxxx=[Execute,Read,Write])
    length():long 文件夹的length为0
    lastModified():long
    (2)获取文件路径、名称:
    getxxxxx:String (xxxxx=[Name,Parent,Path,AbsolutePath,CanonicalPath])
    Name=pathnamechild
    Parent=parent ull
    Path=parentchild
    AbolutePath=绝对路径,从头到尾
    CanonicalPath=绝对路径,但是会省略..
    即使实际文件不存在,也能执行这个语句
    getAbsolutePath与getCanonicalPath的区别
    (3)获取文件
    getxxxxx:File (xxxxx=[ParentFile,AbsoluteFile,CanonicalFile])
    (4)获取有关数组
    list():String[]
    list(FilenameFilter):String[]
    listFiles():File[]
    listFiles(FilenameFilter):File[]
    **当File对象为文件时,list返回的数组为null,因为这时对象里面没有东西,File对象不存在时,list返回的数组不为null,但是数组长度为0
    **

    3.判断
    isxxxxx:boolean (xxxxxx=[Directory,File,Hidden,Absolute])
    exists:boolean

    4.操作
    delete():boolean 执行语句了就删除 不管是否正在操作这个文件
    deleteOnExit:void 在虚拟机退出时才删除
    renameTo(File file):boolean 可用于重命名和剪切

    几个陷阱:
    1.将文件创建成目录,或将目录创建成文件
    所以要选择好创建的方法

    public static void main(String[] args)throws IOException{
        File files=new File("123.txt");
        //想要创建一个名为123.txt的文件
        files.mkdirs();
    }

    得到的结果:创建了一个名为123.txt的文件夹

    还有一种情况:

    public static void main(String[] args)throws IOException{
        File files=new File("C:\csdn","123.txt");
        //想要创建C:csdn123.txt
        //!files.createNewFile();
        //但是不存在C:csdn这个目录 这是会抛出IOException->RunTimeException
        files.mkdirs();
        //这句话可以执行,不会报错,但是把123.txt当成一个目录去创建
    }

    这种情况我还没有想到很好的解决方案
    一种思路
    将父目录封装成一个对象
    创建一个方法
    public static File mkFile(File file,String x){code}
    然后利用File的重载构造方法File(File file,String child)

    2.io流对File进行操作的时候,File被删除
    所以就有了deleteOnExit()
    因为对File进行操作完肯定要删掉他

    3.isFile()和isDirectory()都出错
    当这个抽象路径不存在时,即为一个不与文件(夹)连接的对象
    此时isFile()和isDirectory()均返回false

    File类的优点:
    判断机制:
    在IO中,创建文件,不论这个文件是否存在都会创建,如果存在即被覆盖,只有会丢失数据
    但是File中只有执行了获取方法才会创建对象
    利用exists方法判断,有这个文件(夹)我就不建,没有这个文件(夹)我就建立
    compareTo(File)和length()方法可以用于排序,实现计算机中根据名称、大小、日期等等

    对File的看法:
    File这个类很神奇,可以把文件或文件夹封装成一个对象,即使不存在这个对象,也可以把抽象路径封装成对象(假装有这个对象)
    正是因为假装有这个对象,才会与IO流的创建方法不同,不至于覆盖本来的文件

  • 相关阅读:
    Activity的生命周期和启动模式
    网络基础1
    Jersey用户指南学习笔记1
    IntelliJ IDEA + Maven + Jetty + Jersey搭建RESTful服务
    Java并发编程实战笔记—— 并发编程4
    Java并发编程实战笔记—— 并发编程3
    Java并发编程实战笔记—— 并发编程2
    7.2.4
    7.2.4
    7.2.3
  • 原文地址:https://www.cnblogs.com/wewill/p/5588766.html
Copyright © 2011-2022 走看看