• Java_FileIO流


    存储数据的方案

    在这里插入图片描述

    有些数据想长久保存起来,咋整?

    文件时非常重要的存储方式,在计算机硬盘中。
    即便断电,或者程序终止了,存储在硬盘文件中的数据也不会丢失。

    在这里插入图片描述

    File

    File 是Java.io.包下的类,File类对象,用于代表当前操作系统的文件(可以是文件、文件夹)
    获取文件信息(大小、文件名、修改时间)
    判断文件的类型
    创建文件/文件夹
    删除文件/文件夹

    注意:File类只能对文件本身进行操作,不能读写文件里面存储的数据。

    IO流

    用于读写数据的(可以读写文件,或网络中的数据…)

    File流的使用

    创建File类对象

    构造器说明
    public File (String pathname)根据文件路径创建文件对象
    public File(String parent,String child)根据父路径和子路径名字创建文件对象
    public File(File parent,String child)根据父路径对应文件对象和子路径名字创建文件对象
      public class FileTest1{
        public static void main(String[] args)
        {
           //1、创建一个File对象,指代某个具体文件
           //路径分隔符
           //File f1 = new File("D:/resource/ab.text");
           //File f1 = new File("D:\\resource\\ab.txt");
           File f1 = new File("D:"+ File.sparator+"resource"+File.separator+"ab.txt");
           System.out.println(f1.length());
    
          File f2 = new File("D:/resource");
          System.out.println(f2.length());
    
          File f3 = new File("D:/resource/aaaa.txt");
          System.out.println(f3.length());
          System.out.println(f3.exists);//false
          
          //我现在要定位的文件是在模块中,应该怎么定位呢?
          //绝对路径 :带盘符的
          //File f4 = new FIle("D:\\code\\javaspromax\\file-io-app\\src\\itheima.txt");
          //相对路径(重点):不带盘符,默认是直接去工程下寻找文件。
          File f4 = new File("file-io-app\\src\\ithema.txt");
          System.out.println(f4.length());
          
          
          
        }
      }
      
    
    
    构造器说明
    public File (String pathname)根据文件路径创建文件对象
    public File (String parent,String child)根据父路径和子路径名字创建文件对象
    public File(File parent,String child)根据父路径对应文件对象和子路径名字创建文件对象

    File 封装的对象仅仅是一个路径名,这个路径可以是存在的,也允许是不存在的。

      public class FileTest1{
       public static void main(String[] args)
       {   //创建一个具体File对象,指代某一个文件
          //1、 File f1 = new File("D:\\resouerce\\ab.txt");
         File f1 = new File("D:\\resource\\ab.txt");
         File f1 = new File("D:" + File.separator+"resource"+File.sparator+"ab.txt");
    
         File f2 = new File("D:/resuorce");
         System.out.println(f2.length());
    
    
      //注意File对象可以指代一个不存在的文件路径
         File f3 = new File("D:/resource");
         System.out.println(f3.length());
         System.out.println(f3.exists());
    
      //我现在要定位文件实在文件是在模块中,该如何定位
       //绝对路径:带盘符的
       //File4 f4 = new File("D:\\code\\javasepromax\\file-io-app\\src\\itheima.txt");
       //相对路径(重点),不带盘符的,默认直接工程下寻找文件
       File f4 = new File("file-io-app-src-itheima.txt");
           ()
               
       }
      }
    

    File 类提供的遍历文件夹的功能

    方法名称说明
    public String[] list()获取当前目录下所有的"一级文件名称"到一个字符串数组中去返回。
    public File[] listFiles()获取当前目录下所有的“一级文件对象”到一个文件对象数组中去返回 (重点)

    使用listFile方法时的注意事项

    当主调是文件,或者路径不存在时,返回NULL
    当主调时空文件夹时,返回一个长度为0的数组
    当主调是一个有内容的文件夹时,将里面所有的一级文件和文件夹的路径放在File数组中返回
    当主调是一个文件夹,且里面有隐藏文件时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件
    当主调是一个文件夹时,返回null

    概述:
    封装一个磁盘路径字符串,对这个路径可以执行一次操作
    可以封装文件路径、文件夹路径、不存在的路径
    创建对象
    File(String pathname)通过将给定路径名字符串转换为抽象路径名来创建一个新的File实例
    new File(“d:/abc/a.txt”);
    new File(“d:/abc”,”a.txt”);
    
    常用方法
    创建:
    createNewFile()在指定位置创建一个空文件,成功就返回true,如果已存在就不创建,然后返回falsemkdir() 在指定位置创建一个单级文件夹。
    mkdirs() 在指定位置创建一个多级文件夹。
    renameTo(File dest)如果目标文件与源文件是在同一个路径下,那么renameTo的作用是重命名, 如果目标文件与源文件不是在同一个路径下,那么renameTo的作用就是剪切,而且还不能操作文件夹。
    
    删除:
    delete() 删除文件或者一个空文件夹,不能删除非空文件夹,马上删除文件,返回一个布尔值。
    deleteOnExit()jvm退出时删除文件或者文件夹,用于删除临时文件,无返回值。
    
    判断:
    exists() 文件或文件夹是否存在。
    isFile() 是否是一个文件,如果不存在,则始终为falseisDirectory() 是否是一个目录,如果不存在,则始终为falseisHidden() 是否是一个隐藏的文件或是否是隐藏的目录。
    isAbsolute() 测试此抽象路径名是否为绝对路径名。
    
    获取:
    getName() 获取文件或文件夹的名称,不包含上级路径。
    getAbsolutePath()获取文件的绝对路径,与文件是否存在没关系
    length() 获取文件的大小(字节数),如果文件不存在则返回0L,如果是文件夹也返回0LgetParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回nulllastModified()获取最后一次被修改的时间。
    
    文件夹相关:
    static File[] listRoots()列出所有的根目录(Window中就是所有系统的盘符)
    list() 返回目录下的文件或者目录名,包含隐藏文件。对于文件这样操作会返回nulllistFiles() 返回目录下的文件或者目录对象(File类实例),包含隐藏文件。对于文件这样操作会返回nulllist(FilenameFilter filter)返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回nulllistFiles(FilenameFilter filter)返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null/*常用方法测试*/
    public class TestFile {
        public static void main(String[] args) throws IOException {
            //1.创建File类对象
            /*1.ready目录与1.txt需要自己手动创建
            * 2.File需要导包:import java.io.File;
            * 3.路径是String类型,必须写正确,不然找不到文件
            * 4.完整的文件名包含两部分:文件名+后缀名*/
            File file = new File("E:\\ready\\1.txt");
    
            //2.1测试File中的常用方法
            System.out.println(file.length());//3,获取文件的字节量
            System.out.println(file.exists());//true,判断文件是否存在
            System.out.println(file.isFile());//true,判断是否为文件
            System.out.println(file.isDirectory());//false,判断是否为文件夹
            System.out.println(file.getName());//1.txt获取文件名
            System.out.println(file.getParent());//E:\ready 获取父级路径
            System.out.println(file.getAbsolutePath());//E:\ready\1.txt 获取带盘符的完整路径:绝对路径
    
            //2.2 测试创建与删除
            /*new 只会帮你在内存中创建一个File类型的对象
            * 并不会帮你在磁盘中创建一个真实存在的2.txt文件*/
            file = new File("E:\\ready\\2.txt");
    
            //创建一个之前不存在的文件2.txt,如果创建成功,会返回true
            /*如果指定创建文件的路径不对,会抛出异常:java.io.Exception
            * 所以需要提前处理这个问题,我们暂时选择在main()上抛出
            * 这个IO异常是目前我们遇到的强制要求必须预先处理的异常
            * 如果不处理,方法的调用会报错,通不过编译*/
            System.out.println(file.createNewFile());//创建之前不存在的文件
    
            file = new File("E:\\ready\\m");
            System.out.println(file.mkdir());//创建之前不存在的单层文件夹
    
            file = new File("E:\\ready\\a\\b\\c");
            System.out.println(file.mkdirs());//创建之前不存在的多层文件夹
    
            System.out.println(file.delete());//c被删除,删除空文件夹或者文件
    
            file = new File("E:\\ready\\a");
            System.out.println(file.delete());//false,a文件夹不是空的,里面有内容
    
            file = new File("E:\\ready\\2.txt");
            System.out.println(file.delete());//2.txt被删除,可以删除文件
    
            //2.3测试展示文件列表
            file = new File("E:\\ready");
            String[] list = file.list();/*不常用*/
            System.out.println(Arrays.toString(list));
            //这句话会报错,因为这是一个String[],所以数组中每个元素都是String类型的
            //那么只能用String类中的方法,而isDirectory()是File类中的方法
            //System.out.println(list[0].isDirectory());
    
            File[] fs = file.listFiles();/*常用*/
            System.out.println(Arrays.toString(fs));
            System.out.println(fs[0].isDirectory());
        }
    }
    
    
    
  • 相关阅读:
    Android Studio 修改代码不生效,终极解决方案!
    看看防火墙
    JavaEE、SpringMVC
    如何压缩图片的大小?这两个方法了解过吗
    【PG】PostgreSQL 预写日志(WAL)、checkpoint、LSN
    matlab 小数据法求liyapunov指数
    Gerver view软件使用
    SPI通信协议
    精简 jre 涉坑记录
    3.【异步通信框架】RabbitMQ
  • 原文地址:https://blog.csdn.net/weixin_44738540/article/details/139712728