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

第10章 输入与输出流

10.1 File类

public StringgetName():获取文件的名字。

publicboolean canRead():判断文件是否为可读的。

publicboolean canWrite():判断文件是否可被写人。

publicboolean exists():判断文件是否存在。

public long length():获取文件的长度(单位是字节)。

public StringgetAbsolutePath():获取文件的绝对路径

public StringgetParent():获取文件的父目录。 

publicboolean isFile():判断文件是否为一个普通文件,而不是目录。

publicboolean isDirectory():判断文件是否为一个目录。

publicboolean isHidden():判断文件是否为隐藏文件。

public longlastModified():获取文件最后修改的时间(时间是从1970年午夜至文件最后修改时刻的毫秒数)。

创建File对象本身一般不会发生异常,它只是对文件或目录路径进行抽象表示,不涉及实际的文件系统操作(如读写等可能引发异常的操作 )

10.2 文件字节输入流

FileInputStream是字节流,用于按字节读取文件内容

FileInputStream的read()方法:从输入流中读取一个字节的数据,返回值为读取到的字节数据(0 - 255 范围),若到达流末尾返回 -1 。它操作的是字节

10.3 文件字节输出流

FileReader按字符读取文件

10.4 文件字符输入和输出流

FileReader是字符流,主要用于按字符读取文本文件

FileReader的read()方法:从输入流中读取一个字符的数据,返回值为读取到的字符(Unicode 码值),若到达流末尾返回 -1 。它操作的是字符,内部会涉及字节到字符的解码转换

10.5 缓冲流

BufferedReader是用于缓冲读取字符的流,它不能直接指向字节流FileInputStream。需要通过InputStreamReader将FileInputStream转换为字符流后,才能作为参数传递给BufferedReader构造方法

BufferedWriter是字符缓冲输出流,FileWriter是用于写入字符到文件的流。可以通过BufferedWriter bw = new BufferedWriter(new FileWriter("文件路径"))的方式,让BufferedWriter指向FileWriter流,起到缓冲写入的作用

10.6 随机流

RandomAccessFile流指向文件只是建立了对文件的操作连接,并不会自动刷新文件。刷新操作一般是针对输出流中缓冲数据写入到文件等存储介质而言,RandomAccessFile本身指向文件时无此行为

10.7 数组流

10.8 数据流

向文件尾追加数据,需要使用FileOutputStream的追加模式。FileOutputStream有两个常用构造方法:

FileOutputStream(String name) :创建一个向指定文件写入数据的输出流,如果文件存在,会覆盖原有内容。

FileOutputStream(String name, boolean append) :当第二个参数append为true时,表示追加模式,即向文件尾追加数据;为false时(默认情况),表示覆盖模式 。

10.9 对象流

使用对象流写入或读入对象时,要保证对象是序列化的。

被序列化的类必须实现Serializable接口,否则会抛出NotSerializableException异常。

静态变量和用transient修饰的变量不会被序列化。反序列化时,类的结构和序列化时需保持一致(如类名、字段等),否则可能出现InvalidClassException等问题 。

注意对象引用的顺序和完整性,避免出现StreamCorruptedException等异常。

使用对象流很容易得获取一个序列化对象的克隆,只需将该对象写入到对象输出流,那么用对象输入流读回的对象一定是原对象的一个克隆。

要克隆对象,可利用对象序列化和反序列化机制。先将对象通过ObjectOutputStream写入字节数组输出流(或其他输出流),再通过ObjectInputStream从对应的输入流中读取,从而得到一个克隆对象。需确保对象所属类实现Serializable接口。

10.10 序列化与对象的克隆

10.11 使用Scanner解析文件

10.12 读写图像文件

10.13 文件对话框

10.14 带进度条的输入流

10.15 文件锁

http://www.xdnf.cn/news/7087.html

相关文章:

  • Ansible模块——文件内容修改
  • IntelliJ IDEA设置编码集
  • ngx_http_referer_module 模块概述
  • Protect Your Digital Privacy: Obfuscate, Don’t Hide
  • GLPK(GNU线性规划工具包)中建模语言MathProg的使用
  • 【Linux网络】多路转接poll
  • ESP32C3在ESP-IDF中的nvs操作
  • Django 项目创建全攻略
  • R for Data Science(3)
  • oppo手机安装APK失败报错:安装包异常
  • 常见的数据库问题
  • Binary Prediction with a Rainfall Dataset-(回归+特征工程+xgb)
  • 【C++进阶篇】C++容器完全指南:掌握set和map的使用,提升编码效率
  • Popeye
  • UnLua源码分析(一)初始化流程
  • 13.Ext系列文件系统
  • 【2025版】SpringCloud Gateway网关快速入门
  • 相机Camera日志分析之十二:高通相机Camx hal拍照1帧logcat日志capture拍照帧详解
  • 基于CNN的猫狗识别(自定义CNN模型)
  • AIDA64 extreme7.5 版本注册激活方法
  • 掌握LINQ:查询语法与方法语法全解析
  • 什么是 Flink Pattern
  • 内容中台的AI基石是什么?
  • TDengine 在新能源领域的价值
  • 前端动画库 Anime.js 的V4 版本,兼容 Vue、React
  • OpenHarmony外设驱动使用 (四),Face_auth
  • 蓝牙通讯协议学习
  • 内容社区系统开发文档(中)
  • 继MCP、A2A之上的“AG-UI”协议横空出世,人机交互迈入新纪元
  • windows环境下c语言链接sql数据库