zoukankan      html  css  js  c++  java
  • java--IO流之File类

    IO概述

      回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了。那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再把这些数据读出来继续使用呢?其实要把数据持久化存储,就需要把内存中的数据存储到内存以外的其他持久化设备(硬盘、光盘、U盘等)上。

    当需要把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作。

    当把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作。

    因此我们把这种输入和输出动作称为IO操作。

    一、File类的出现

      阅读其描述:File文件和目录路径名的抽象表示形式。即,Java中把文件或者目录(文件夹)都封装成File对象。也就是说如果我们要去操作硬盘上的文件,或者文件夹只要找到File这个类即可。

    二、 File类的构造函数

     1 //File 类包含
     2 //1.路径    path
     3 //2.目录   directory  ---文件夹
     4 //3.文件   file
     5 public static void method2(){
     6         //File类构造方法不会给你检验这个文件夹或文件是否真实存在
     7         1. File file=new File("e:\test\test\a.txt");
     8         2. File file=new File("e:","test");
     9             File f1=new File("d:\test");
    10         3. File file=new File(f1,"a.txt");
    11             System.out.println(file);
    12     }

     成员变量

    public static void method1(){
            System.out.println(File.pathSeparator);
            //与系统有关的路径分隔符---win ; linux :
            System.out.println(File.separator);
            //与系统有关的名称分隔符---win  linux /
        }

    三、File类的获取

     1 public static void method3(){
     2         //File file=new File("d:\test\a.txt");
     3         File file=new File("abc");
     4         //相对路径走的是本工程路径
     5         System.err.println(file.getAbsolutePath());//返回此抽象路径名的绝对路径名字符串。
     6     }
     7     public static void method4(){
     8         //获取本路径目录名或者文件名
     9         File file=new File("e:\test\test\a.txt");
    10         System.out.println(file.getName());
    11         //getPath()和toString()一个作用
    12         System.out.println(file.getPath());
    13         //返回文件的长度lang--字节数  *针对文件使用
    14         System.out.println(file.length());
    15     }

    四、文件和文件夹的创建删除等

     1 public static void method5() throws IOException{
     2         //创建文件(只能创造文件不能创造文件夹)--返回true或false
     3         File file=new File("e:\test\b.txt");
     4         boolean flag=file.createNewFile();
     5         System.out.println(flag);
     6     }
     7     public static void method6(){
     8         //创建文件夹--返回true或false
     9         File file=new File("e:\test\b");
    10         boolean flag=file.mkdirs();
    11         System.out.println(flag);
    12     }
    13     public static void method7(){
    14         //删除文件或文件夹---直接从硬盘上删除不走回收站,删除需谨慎
    15         File file=new File("e:\test\b.txt");
    16         boolean flag=file.delete();
    17         System.out.println(flag);
    18     }
    19     public static void method8(){
    20         //判断测试
    21         File file=new File("e:\test\b");
    22         //判断file对象表示的文件或文件夹是否真实存在
    23         boolean flag=file.exists();
    24         System.out.println(flag);
    25         //判断是否是文件夹
    26         boolean flag1=file.isDirectory();
    27         System.out.println(flag1);
    28         //判断是否是文件
    29         boolean flag2=file.isFile();
    30         System.out.println(flag2);
    31     }

    五、listFiles()方法介绍

    public static void method9(){
            //获取此路径下的所有的文件及文件夹--返回字符串名称
            File file=new File("e:\test");
            String[] files=file.list();
            for(String s:files){
                System.out.println(s);
            }
        }
        public static void method10(){
            //获取此路径下的所有的文件及文件夹--返回文件或文件夹路径
            File file=new File("e:\test");
            File[] files=file.listFiles();
            for(File f:files){
                System.out.println(f);
            }
        }

    注意:在获取指定目录下的文件或者文件夹时必须满足下面两个条件

    1,指定的目录必须是存在的,

    2,指定的必须是目录。否则容易引发返回数组为null,出现NullPointerException

     六、文件过滤器

    自定类继承FileFilter接口

    1 public class MYFilter implements FileFilter{
    2     //listFiles方法默认调用accept方法--返回true才能添加进File数组
    3     @Override
    4     public boolean accept(File pathname) {
    5         String name=pathname.getName().toLowerCase();//获取路径字符串并变成小写
    6         boolean flag=name.endsWith(".java");
    7         return flag;
    8     }
    9 }

    测试类

    1 public class Demo02 {
    2     public static void main(String[] args) {
    3         File file=new File("e:\test");
    4         File[] files=file.listFiles(new MYFilter());---有参构造有过滤器,无参是没有过滤器
    5         for(File f:files){
    6             System.out.println(f);
    7         }
    8     }
    9 }

     内存图解:

  • 相关阅读:
    机器学习中常见的优化算法
    linux端安装Anaconda,方便远端访问jupyter
    核心③自动分号插入
    setTimeout 和 setInterval
    核心②undefined 和 null
    类型④类型转换
    核心①为什么不要使用 eval
    类型③instanceof 操作符
    类型①相等与比较
    类型②typeof 操作符
  • 原文地址:https://www.cnblogs.com/-dashu/p/9506396.html
Copyright © 2011-2022 走看看