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:\demo0611\a.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\b.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);

   }

 

 

 

      

posted @ 2019-09-04 10:18  腊月出去玩  阅读(164)  评论(0编辑  收藏  举报