0
点赞
收藏
分享

微信扫一扫

javaFile类知识点总结

王小沫 2022-02-14 阅读 133
java后端

1.

File类

Java.io.File类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找、删除等操作

File中的静态成员变量

pathSeparator与系统有关的路径分隔符 File.pathSeparator 代表路径分隔符 windows:用分号表示 linux:冒号

separator与系统默认的名称分隔符 File. separator 文件名称分隔符 widows:反斜杠\ Linux:正斜杠/

绝对路径:是一个完整的路径,以盘符开始的路径 例如“C:\\Users\\itcas\\shds.txt”

相对路径:是一个简化的路径,相对于当前项目的根目录,如果使用当前目录的根目录,路径可以简化书写:

C:\\Users\\itcas\\shds.txt 简化为:123.txt(可以省略项目的根目录)

注意:1:路径中是不区分大小写的

      2:路径中的文件名称分隔符windows使用反斜杠,反斜杠是转义字符,两个反斜杠代表一个普通泛斜杠

2.

File中的构造方法:

第一个:

File(String pathname)  通过将给定路径名字符串转换为抽象路径名来创建一个新的File实例

路径可以是以文件名结尾,也可以一是以文件夹结尾

路径可以是相对路径,也可以是绝对路径

路径可以存在也可以是不存在,创建File对象,只是把字符串路径封装为File对象,不考虑路径的真假情况

第二个:

File(String parent,String child) 根据parent路径名字和字符串和child路径名字创建一个新File实例

参数:

String parent父路径

String child子路径

好处:父路径和子路径,可以单独书写,使用起来非常灵活,父路径和子路径都可以变化

第三个:

File(File parent,String child) 根据parent路径名字和字符串和child路径名字创建一个新File实例

参数:

File parent父路径

String child子路径

好处:父路径和子路径,可以单独书写,使用起来非常灵活,父路径和子路径都可以变化

父路径是File类型,可以使用File的方法对路径进行一些操作,在使用路径创建对象

3.

File类常用的方法:

获取的方法:

getAbsolutePath() 返回此File的绝对路径名字符串

getPath() 将此File转换为路径名字符串

getName() 返回次File表示的文件或目录的名称

length()返回次File表示的文件的长度

判断功能的方法:

public boolean exixts()   此file表示的文件或目录是否实际存在

isDiretory() 此file表示的是否为目录

isFile() 此file表示的是否为文件

创建,删除功能的方法:

public boolean createNewFile() 当且仅当具有该名称的文件上不存在时,创建一个新的空文件(不能创建文件夹)

delete() 删除由此File表示的文件或目录(文件夹)

mkdir()创建此file的表示的目录,创建单级文件夹

mkdirs()创建由此file表示的目录,包括任何必须但不存在的父目录   创建多级文件夹

遍历(文件夹)目录功能:

Public String [] list(); 返回一个String数组,表示该File目录中的所有子文件或目录

Public File [] listFiles() 返回一个File数组,表示该File目录中的所有的子文件或目录

注意:list方法 和listFiles方法遍历的是构造方法中给出的目录,如果构造方法中给出的目录的路径不存在,会抛出空指针异常,如果构造方法中给出的路径不是一个目录,也会抛出空指针异常

3.

递归

递归:指当前在方法内调用自己的这种想象,递归分类:直接递归、间接递归

直接递归:称为方法自身调用自己

间接递归:可以A方法调用B方法,B方法调用C方法,C方法调用A方法

注意事项:

1递归一定要有条件限定,保证递归能够停下来,否则会发生栈内存溢出

2在递归中虽然有限定条件,但是递归次数不能太多,否则也会发生栈内存溢出

3构造方法禁止递归

文件过滤器:

Java.ioFileFilter是一个接口,是File的过滤器,该接口的对象可以传递给listFiles(FileFilter)作为参数,接口中只有一个方法 Boolean accept(File name):

我们可以使用过滤器来实现优化:
在File类中有两个和listFiles重载的方法,方法参数传递的就是过滤器
  File[] listFiles(FileFilter filter)  java.io.FileFilter接口:用于抽象路径名(File对象)的过滤器
     作用:用于过滤文件(File对象)
     抽象方法:用于过文件的方法  boolean accept(File pathname) 测试指定抽象路径名是否应该包含在某个路径列表中
        参数:File pathname:使用ListFiles方法遍历目录,得到的每一个文件对象
  File[] listFiles(FilenameFilter filter)   java.io.FileFilter接口;实现此接口的类实例可用于过滤文件名
     作用:用于过滤抽象名称
     抽象方法:用于过滤抽象文件的方法  boolean accept(File dir,String name)  测试指定文件夹是否应该包含在某一文件列表中
         参数:File dir:构造方法中传递的被遍历的目录
               String name:使用listFiles方法遍历的目录,获取的每一个文件或文件夹的名称

注意:两个过滤器接口是没有实现类的,需要我们写实现类,重写过滤的规则

使用Lamdba表达式优化匿名内部类(接口中只有一个抽象方法)

//使用Lamdba表达式优化匿名内部类
File[] file=dir.listFiles((File pathname)->{
    //过滤规则
    return pathname.isDirectory() || pathname.getName().toLowerCase().endsWith(".java");
});

//使用Lamdba表达式优化匿名内部类(接口中只有一个抽象方法)
 File[] file=dir.listFiles((File d, String name)->{
     return  new File(d,name).isDirectory() || name.toLowerCase().endsWith(".java");
     // File(dir,name).isDirectory()根据目录组合成文件对象
 });

4.

硬盘永久存储,硬盘中存储的数据都是字节、内存:临时存储

IO概述

I:input(输入)  读取

O:output(输出) 写入

流:数据(字符、字节) 1个字符=2个字节=8个二进制位

输入:是把硬盘中的数据读取到内存中使用

输出:把内存中的数据写入到硬盘中保存

根据数据分为:字符流、字节流

字节流: 字节输入流:InputStream 字节输出流:OutputStream

字符流: 字符输入流:Read        字符输出流:Writer

字节流:

一切皆为字节:

一切文件数据(文本、图像、视频)在存储时,都是以二进制的形式保存的,都是一个字节,那么传输时一样如此,所以字节流可以传输任意文件数据,在操作流的时候,我们要时刻明确,无论使用什么流的对象,底层传输的始终为二进制数据

字节输出流OutputStream

Java.io.OutputStream此抽象类是表示所有输出流所有类的超类(父类)将指定的字节信息写出到目的地

方法:

close() 关闭此输出流并释放此流有关的所有系统资源

flush() 刷新次输出流并强制写出所有缓冲的输出字节

write() 有3个  将数据写入到硬盘中

  write(byte[] b)将b.length个字节从指定的byte数组写入此输出流

  public void' write(byte[] b):将b.length字节从指定的字节数组写入此输出流
  如果写的第一个字节是正数(0-127),那么显示的时候会查询ASCII表
  如果写的第一个字节是负数,那第一个字节会和第二个字节组成一个中文显示,查询系统默认码表(GBK)

  write(byte[] b,int off,int len ) 将指定的字节数组写入len个字节,从偏移量off开始输出到此的输出流

 public void write(byte [] b,int off,int len):把字节数组的一部分写入到文件中
   int off:数组的开始索引
   int len:写几个字节
   指定的字节数组写入len字节,从偏移量off开始输出到此输出流

  write(int b)将指定的字节输出流  写一个字节

/*
写入字符方法:可以使用String类中的方法把字符串,转换为字节数组
  byte[] getByte() 把字符串转换为字节数组
 */
byte[] byte2="你好".getBytes();
System.out.println(Arrays.toString(byte2));//[-28, -67, -96, -27, -91, -67]  编码格式UTF-8里边3个字节是一个中文,JDK中2个字节是一个中文
fos.write(byte2);

直接已知子类:ByteArrayOutputStream、FileOutputStream、FilterOutputStream ObjectOutputStream、OutputStream、PipeOutputStream

FileOutputStream文件字节输出流 作用:把内存中的数据写入到文件中

构造方法:

  FileOutputStream(String name)创建一个向具有指定名称的文件中写入数据的输出文件流

  FileOutputStream(File file)创建一个向指定File对象表示的文件中写入数据的文件输出流

参数:写入数据的目的地

  String name:目的地是一个文件的路径

  File file :目的地是一个文件

构造方法作用:

创建一个FileOutputStream对象

会根据构造方法中传递的文件/文件路径,创建一个空的文件

会把FileOutputStream对象指向创建好的文件

写入数据的原理:(内存-硬盘)

Java程序—>JVMàOS(操作系统)àOS(自己方法)调用写数据的方法à把数据写入到文件中

字节输出流的使用步骤:

创建一个FileOutputStream对象,构造方法中传递写入数据的目的地

调用FileOutputStream对象中的write方法把数据写入到文件中

释放资源(流使用会占用硬顶的内存,使用完毕要把内存清空,提高程序的效率)

fos.write(97);//在写入数据的时候,会把10进制整数97,转换为二进制整数

硬盘中存储的数据都是字节

任意的文本编辑器(记事本)再打开文件的时候,都会查询编码表,把字节转换为字符表示

0-127查询ASCII表

其他值查看系统默认码表(中文系统GBK)

/*
写入字符方法:可以使用String类中的方法把字符串,转换为字节数组
  byte[] getByte() 把字符串转换为字节数组
 */
byte[] byte2="你好".getBytes();
System.out.println(Arrays.toString(byte2));//[-28, -67, -96, -27, -91, -67]  编码格式UTF-8里边3个字节是一个中文,JDK中2个字节是一个中文
fos.write(byte2);

追加写/续写

  FileOutputStream(String name,boolean append)创建一个向具有指定name的文件夹中写入数据的的输出文件流

  FileOutputStream(File file,boolean append)创建一个向指定File对象表示的文件中写入数据的文件输出流

参数:

   String name,File file:写入数据的目的地

   boolean append:追加写开关 true:创建的对象不会覆盖原文件,继续在文件的末尾追加写数据 false创建一个新文件,覆盖源文件

换行符号:

Windows:\r\n

Linus:/n

Mac:/r

5.

字节输入流:InputStream

Java.io.InputStream抽象类表示字节输入流的所有类的父类,它定义了字节输入流的基本共性方法

public void close() 关闭此输入流并释放与此流相关联的任何系统资源

public abstract int read()从输入流读取数据的下一个字节

public int read(byte[] b)从输入流中读取一些字节,并将他们存储到字节数组b中

直接已知子类:AudioInputStream(读取音频)、ByteArrayInputStream(读取数组)、FileInputStream(读取文件)、FilterInputStream(过滤器的)、InputStream、ObjectInputStream(读取对象)、PipedInputStream(管道流)、SequenceInputStream(队列的)、StringBufferInputStream(字符串缓冲区)

FileInputStream():文件字节输入流

作用:把硬盘文件的数据,读取到内存中使用

构造方法:

  FileInputStream(String name)

  FileInputStream(File file)

 参数:读取文件的数据源

      String name:文件的路径

      File file:文件

构造方法的作用:

会创建一个FileInputStream对象

会把FileInputStream对象指定的构造方法中要读取的文件

举报

相关推荐

0 条评论