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

    IO

    流的概念

      流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。

    必有源端和目的端,流可分为两类:输入流和输出流。用户可以从输入流中读取信息,但不能写它。相反,对输出流,只能往输入流写,而不能读它。

    IO流的分类

    根据处理数据类型的不同分为:字符流和字节流

    根据数据流向不同分为:输入流和输出流

    File类的出现

    File类的构造方法,

    public File(String pathname)  实例化File类的时候,必须设置好路径

    No.

    方法或常量

    类型

    描述

    1

    public static final String pathSeparator

    常量

    表示路径的分隔符(windows是“;”)

    2

    public static final String separator

    常量

    表示路径的分隔符(windows是“”)

    3

    public File(String pathname)

    构造

    创建File类对象,传入完整路径

    4

    public boolean createNewFile()throws IOException

    普通

    创建新文件

    5

    public boolean delete()

    普通

    删除文件

    6

    public boolean exists()

    普通

    判断文件是否存在

    7

    public boolean isDirectory()

    普通

    判断给定的路径是否在一个目录

    8

    public long length()

    普通

    返回文件的大小

    9

    public String[] list()

    普通

    列出指定目录的全部内容,只是名称

    10

    public File[] listFiles()

    普通

    列出指定目录的全部内容,会有路径

    11

    Public Boolean mkdir()

    普通

    创建一个目录

    12

    Public Boolean renameTo(File dest)

    普通

    为已有的文件重命名

    代码演示

        系统有关的路径分割符:

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

     File的三种封装

     

      public static void method02() {
    
           // 封装 第一种
    
           File file = new File("D:\demo0611\a.txt");
    
           System.out.println(file);
    
           // 封装 第二种 a,txt 可以作为参数进行传入---参数(文件)不确定用
    
           File file2 = new File("D:\demo0611", "a.txt");
    
           // 封装 第三种
    
           File file3 = new File(new File("D:\demo0611"), "a.txt");
    
     
    
        }

      File类的获取文件名,路径

     

      public static void method03() {
    
           File file = new File("D:\demo0611\a.txt");
    
           // 获取FILE类对象的
    
           //绝对路径--构造方法不能判断是否是真的
    
           String abpath = file.getAbsolutePath();
    
           System.out.println(abpath);
    
           // 获取文件名
    
           String filename = file.getName();
    
           System.out.println(filename);//a.txt
    
           // 获取路径名
    
           String filepath = file.getPath();
    
           System.out.println(filepath);//D:demo0611a.txt
    
           //获取文件长度--就是大小占内存的大小
    
           System.out.println(file.length());//就是大小占内存的大小
    
     
    
        }

    File的建立,判断

     

       

    public static void method04() throws IOException{
    
           //不识别大小写  ,不能重复建立
    
          
    
           //用方法创建文件--注意 只能创建文件,,文件存在不能被覆盖
    
           File file =new File("D:\demo0611\a.txt");
    
           //file.createNewFile();//报错   是因为  构造方法 file 不进行判断文件是否存在
    
          
    
           //判断file对象封装的文件或文件加-返回布尔值-
    
           System.out.println(file.exists());//true
    
           //删除文件--文件或文件夹都可已被删除   File file =new File("D:\demo0611\a");
    
            file.delete();
    
            //创建一级文件夹--mkdir--只能创建文件夹,文件夹存在不能被覆盖
    
            //file.mkdir(); 
    
           //创建多级文件夹--mkdirs   File file =new File("D:\demo0611\c\c\v\c");
    
           //file.mkdirs();
    
           //判断文件是否是文件夹
    
            System.out.println(file.isDirectory());//flas
    
            //判断是否是文件
    
            System.out.println(file.isFile());//flas
    
        }

     

    listFiles()方法介绍

     

    list()方法是返回某个目录下的所有文件和目录的文件名,返回的是String数组

    listFiles()方法是返回某个目录下所有文件和目录的绝对路径,返回的是File数组

     

     

       public static void method05(){
    
               File  file=new  File("D:\demo0611");
    
           //获取路径下的文件和文件加的String[]---只打印文件名  b.txt
    
           String[] files=file.list();
    
           //遍历
    
           for(String s: files){
    
               System.out.println(s);
    
           }
    
        //获取所有路径下的文件和文件夹的files[]-- 打印问文件路径D:demo0611.txt
    
           File[] filess=file.listFiles();
    
           for(File f:filess){
    
               System.out.println(f);             
    
              
    
           }

    文件过滤器

    通过listFiles()方法,我们可以获取到一个目录下的所有文件和文件夹

    java.io.FilenameFilter是文件名过滤器,用来过滤不符合规格的文件名,并返回合格的文件;

    1)String[] fs = f.list();

    (2)File[] fs = f.listFiles();

    这两个方法返回f下的所有文件或目录;

    FilenameFilter用来把符合要求的文件或目录返回;

    因此可以调用:

    (1)String []fs = f.list(new MyFilter ());;

    (2)File[]fs = f.listFiles(new MyFilter ());

     文件名过滤器一般用法

    1.实现FilenameFilter接口;

    2.实现boolean accept(File dir,String name);   //dir表示文件的当前目录,name表示文件名;

    //定义类实现文件名称FilenameFilter过滤器

     

    public class MyFilter implements FileFilter {
    
     //描述条件
    
        @Override
    
        public boolean accept(File pathname) {
    
        //如果是文件夹 - return  true
    
           if(pathname.isDirectory()){
    
               return true;
    
           }
    
           //获取文件名
    
           String filename=pathname.getName();
    
           //将文件名转成小写
    
           filename=filename.toLowerCase();
    
           //endsWith 指定字符最为后缀
    
           return filename.endsWith(".java");
    
        }
    
    开始过滤文件
    
    public static void main(String[] args) {
    
          File  file =new File("D:\demo0611");
    
          //调用文件过滤器
    
            File[] files=file.listFiles(new MyFilter());
    
           //遍历
    
           for(File f: files ){
    
          System.out.println(f);
    
       }
    
     

     

          

  • 相关阅读:
    推介一款小工具——SwitchHosts
    Postman的使用之进行文件上传
    Postman的使用之普通的提交Post和Get请求
    Postman的安装
    Windows配置基础环境(jdk+tomcat)
    yum clean all大坑解决
    通过代理实现访问内网系统
    批量配置免密登录
    设置JRebel热部署【本地模式】
    使用多线程程序模拟实现单生产者/多消费者问题 (Linux 线程锁实践)
  • 原文地址:https://www.cnblogs.com/layuechuquwan/p/11457362.html
Copyright © 2011-2022 走看看