javaFile类知识点总结

2023-10-26

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对象指定的构造方法中要读取的文件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javaFile类知识点总结 的相关文章

随机推荐

  • C#程序删除自己

    private static void DeleteItselfByCMD ProcessStartInfo psi new ProcessStartInfo cmd exe C ping 1 1 1 1 n 1 w 1000 gt Nul
  • Nand Flash,Nor Flash,CFI Flash,SPI Flash 之间的关系

    前言 在嵌入式开发中 如uboot的移植 kernel的移植都需要对Flash 有基本的了解 下面细说一下标题中的中Flash中的关系 一 Flash的内存存储结构 flash按照内部存储结构不同 分为两种 nor flash和nand f
  • SpringBootWeb登录认证

    登录服务端的核心逻辑就是 接收前端请求传递的 用户名 和 密码 然后再根据用户名和密码查询用户信息 如果用户信息存在 则说明用户输入的用户名和密码正确 如果查询到的用户不存在 则说明用户输入的用户名和密码错误 统一拦截 可以使用两种技术实现
  • 2016年10月—信息安全工程师—上午综合知识(26-30)

    信安16年10月 试题26 26 已知DES算法的S盒如下 如果该S盒的输入110011 则其二进制输出为 A 0110 B 1001 C 0100 D 0101 尚大参考答案 C 解析 本题考查考生对DES算法中S 盒的运用 DES算法是
  • 2.COM接口

    2 1 再谈接口与实现 其实从上一章 COM是个更好的C 可以看出 COM最重要的就是将接口与实现分离 上一章中接口定义头文件中采用C 抽象类的形式 如果调用方是C 环境当然不会有问题 但如果调用方不是C 的编译环境呢 为了把 接口定义 与
  • Mean Average Precision(mAP),Precision,Recall,Accuracy,F1_score,PR曲线、ROC曲线,AUC值,决定系数R^2 的含义与计算...

    背景 之前在研究Object Detection的时候 只是知道Precision这个指标 但是mAP mean Average Precision 具体是如何计算的 暂时还不知道 最近做OD的任务迫在眉睫 所以仔细的研究了一下mAP的计算
  • 期货开户供求平衡周而复始

    1 供求关系和价值规律的演变方程式 人们常说 价格围绕价值波动 傅海棠认为更准确的说法应是 价格围绕成本波动 大部分时间 价格在成本之上 小部分时间 价格在成本之下 价格低了 生产积极性受到抑制 供应减少 而低价还刺激需求 一个行业如果商品
  • 如何将你接入微信自动回答别人的问题

    要将我接入微信自动回答别人的问题 您需要使用微信的开放平台 API 使用开放平台 API 您可以创建一个小程序 该小程序可以接收用户发送的消息 并使用我这个语言模型来生成回复消息 具体来说 您需要以下步骤 在微信公众平台上注册一个小程序 并
  • Python每日一记42>>>机器学习中特征重要性feature_importances_

    在进行机器学习算法中 我们常用的算法就像下面的代码形式类型 经历导入数据 预处理 建模 得分 预测 但是总觉得少了点什么 虽然我们建模的目的是进行预测 但是我们想要知道的另一个信息是变量的重要性 在线性模型中 我们有截距和斜率参数 但是其他
  • LDO和DCDC电路的概述和区别

    一 什么是DCDC DCDC的意思是直流变 到 直流 不同直流电源值的转换 只要符合这个定义都可以叫DCDC转换器 常见的DCDC电路有buck boost buck boost分别是降压 升压 降压升压电路 二 什么是LDO LDO 是一
  • Linux驱动——设备树

    在对总线设备驱动进行详细说明时可以看出 虽然总线设备驱动可以实现驱动和设备分离 但是总线设备驱动引发另外的一个问题就是在相同的芯片不同的开发板上 当外设资源不同时需要在不同的设备文件中去定义引脚 这样就导致开发板中保留大量设备文件 为了解决
  • 多元任务,高额奖金!首届“开放原子开源大赛”等你参与!

    人类有各种交流方式 包括语言 文字 音乐 影像等 有的贴近生活 有的充满艺术感 然而 在人工智能时代 代码作为一种特殊的交流形式愈发重要 它使得人与人 人与机器之间能够高效便捷地沟通 从而为科技发展注入活力 开源 则是让这种交流变得更加丰富
  • Android ADB命令大全(通过ADB命令查看wifi密码、MAC地址、设备信息、操作文件、查看文件、日志信息、卸载、启动和安装APK等)

    ADB很强大 记住一些ADB命令有助于提高工作效率 获取序列号 adb get serialno 查看连接计算机的设备 adb devices 重启机器 adb reboot 重启到bootloader 即刷机模式 adb reboot b
  • URL、URI和URN之间的区别

  • 程序员应该掌握的 10 个搜索技巧

    在今天 用户可以通过搜索引擎轻松找出自己想要的信息 但还是难以避免结果不尽如人意的情况 实际上 用户仅需掌握几个常用技巧即可轻松化解这种尴尬 下面介绍 10 个在进行 Google 搜索时可以使用的便捷技巧 其他搜索引擎也支持这 10 种技
  • C++外观模式

    外观模式 1 外观模式简介及应用场景 外观者模式其实就是相当于对一组子系统功能的组合 对外提供统一的简单接口的模式 当我们在实际开发中 一般情况下是一个单独的子系统对应的是一个独立的功能模块 但是随着业务功能的不断增加 对应子系统的迭代必然
  • CentOS8 服务篇4:FTP文件传输服务搭建与配置

    FTP 文件传输服务三种配置模式 匿名模式 本地用户模式 虚拟用户模式 安装ftp服务 安装完后再根据不同模式进行配置 root localhost yum repos d yum install y vsftpd ftp vsftpd是搭
  • Qt中qss样式表

    qss样式表是用于设置QT程序UI界面中控件的背景图片 大小 字体颜色 字体类型 按钮状态变化等属性 美化UI界面 实现界面和程序的分离 可以快速切换皮肤 1 基本语法 selector attribute value 说明 selecto
  • Java生成exe执行文件

    一 准备工作 下载可将jar包转换的工具EXE4J工具 下载地址为 https www ej technologies com download exe4j files 下载完成 直接点击下一步安装 直到安装完成 导出项目jar包 按以下步
  • javaFile类知识点总结

    1 File类 Java io File类是文件和目录路径名的抽象表示 主要用于文件和目录的创建 查找 删除等操作 File中的静态成员变量 pathSeparator与系统有关的路径分隔符 File pathSeparator 代表路径分