当前位置: 首页 > news >正文

File 类的用法和 InputStream, OutputStream 的用法

1 文件系统的操作
  • 创建文件,删除文件,创建目录,重命名文件,判定文件存在...

  • Java中提供file类进行文件系统操作,使用路径进行初始化表示具体的文件(可以存在,也可以不存在),基于这个对象进行后续操作。构造方法:需要使用双//。IDEA会自动转换。

    基准目录取决于运行程序的方式。

    1. IDEA中运行,基准路径是项目所在的目录

    2. 在命令行中通过Java命令运行,是Java命令所处的目录。

    3. 被其他进程调用的程序,例如进程1通过创建子进程的方式调用进程2。进程2的基准路径和进程1相同。

    4. 代码执行过程中,可以通过一些api修改基准路径,改成我们指定的某个路径。

    修饰符及返回值类型 方法签名 说明

    • String getParent() 返回 File 对象的父目录文件路径

    • String getName() 返回 FIle 对象的纯文件名称

    • String getPath() 返回 File 对象的文件路径

    • String getAbsolutePath() 返回 File 对象的绝对路径

    • String getCanonicalPath() 返回 File 对象的修饰过的绝对路径 需要throw IOException

    • boolean exists() 判断 File 对象描述的文件是否真实存在

    • boolean isDirectory() 判断 File 对象代表的文件是否是一个目录

    • boolean isFile() 判断 File 对象代表的文件是否是一个普通文件

    • boolean createNewFile() 根据 File 对象,自动创建一个空文件。成功创建后返回 true

    • boolean delete() 根据 File 对象,删除该文件。成功删除后返回 true

    • void deleteOnExit() 根据 File 对象,标注文件将被删除,删除动作会到 JVM 运行结束时 才会进行。稍后删除。

    • String[] list() 返回 File 对象代表的目录下的所有文件名

    • File[] listFiles() 返回 File 对象代表的目录下的所有文件,以 File 对象表示 如果想看到所有目录和文件,需要递归。经典面试题。

    • boolean mkdir() 创建 File 对象代表的目录

    • boolean mkdirs() 创建 File 对象代表的目录,如果必要,会创建中间目录

    • boolean renameTo(File dest) 进行文件改名,也可以视为我们平时的剪切、粘贴操作。移动文件,就是修改文件所在的 路径,也可以视为一种”重命名“。

    • boolean canRead() 判断用户是否对文件有可读权限

    • boolean canWrite() 判断用户是否对文件有可写权限

2 文件内容的操作
  • 操作系统提供了读文件和写文件的api,Java也进行了封装。”文件流“/”IO流“ Stream 针对流对象

  • 都是抽象类,需要子类实现

  1. 字节流(二进制)读写数据的基本单位是字节。

  • InputStream

  • OutputStream 数据远离cpu

  1. 字符流(文本)读写数据的基本单位是字符。

  • Reader

    • read()

  • Writer

  • 文件描述符表。打开文件等操作会有在文件描述符表占位置。占满了会有”文件资源泄露“。因此打开文件后应该及时关闭。问题隐蔽性高。

这样不用写finally也不用写close 语法为try with resources。对象必须是实现Closable接口的类才能放进这个try里面。

  1. 文件操作的核心内容:

  • 打开文件 创建流对象即可

  • 关闭文件

  • 读文件 硬盘->内存

    • read() 读一次返回一个字节的内容(byte) 实际返回类型是int,读取完毕是-1 .使用循环读取文件所有内容。

    • read(字节数组)硬盘中读出的对应数据填充到buffer内存的字节数组中。buffer为输出型参数。

    • read(byte[],int off,int len) 使用数组中[off,off+len)下标范围的区间。

  • 写文件

    • 和read相似

    • 但是写操作会把之前的内容清空。只outputstream打开内容也会清空。开启追加模式,写入的同时不会被清空:

    • sccander

相关文章:

  • 【虚拟化安全】虚拟化安全知识全攻略:保障云端数据安全
  • 数据库设计工具drawDB本地部署与远程在线协作实测让效率翻倍
  • Hibernate核心方法总结
  • 阿里云oss视频苹果端无法播放问题记录
  • 项目二 - 任务5:打印乘法九九表
  • Qt饼状图在图例上追踪鼠标落点
  • 人脸表情识别数据集分享(AffectNet、RAF-DB、FERPlus、FER2013、ck+)
  • NVIDIA Jetson 环境安装指导 PyTorch | Conda | cudnn | docker
  • 【qiankun】简易前端微应用搭建
  • 企业工厂生产线马达保护装置 功能参数介绍
  • 4.6学习总结
  • 网络中级(HCIP)项目实践一MGRE的两种架构的私有网段 OSPF 动态路由协议的互联实验(手把手教您,包学会的)
  • 使用 STM32F103C8 连接 ESP8266:创建 Web 服务器
  • 数据结构与算法-数学-基础数学2(扩展欧几里得算法,组合数问题)
  • C++中的类和对象(上)
  • CSS 锚点定位
  • spring-ai-openai调用Xinference1.4.1报错
  • 【ZYNQ Linux移植】1-前期准备
  • 【C++初阶】--- string类模拟实现
  • Springboot JPA ShardingSphere 根据年分表
  • 淮阳住房城乡建设局网站/广西seo
  • 长春专业做网站的公司/网络推广营销技巧
  • 江西师范大学两学一做专题网站/skr搜索引擎入口
  • 天河建设网站系统/怎么让百度收录
  • dm建站系统/百度网盘官方下载
  • 北京网站制作公司兴田德润可以不/免费建网站软件下载