千家信息网

如何掌握java的IO流

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"如何掌握java的IO流",在日常操作中,相信很多人在如何掌握java的IO流问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何掌握java的IO流"
千家信息网最后更新 2026年11月03日如何掌握java的IO流

这篇文章主要介绍"如何掌握java的IO流",在日常操作中,相信很多人在如何掌握java的IO流问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何掌握java的IO流"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

文件API

Q: File类可以用来做目录操作吗?

A:可以。

File对象本身可以是目录。调用file.mkdirs()即可创建目录。

Q:直接调用file.delete()可以删除目录吗?

A:如果是文件或者空目录,可以直接删除。

但如果目录中有文件或者子目录,则必须递归删除。

    private static boolean deleteDir(File dir) {        if (dir.isDirectory()) {            String[] children = dir.list();       //递归删除目录中的子目录下            for (int i=0; i

Q: 有哪些方法判断给定路径下文件是否存在?

A:

1.File类的exists方法: file.exist(string)

File testFile = new File(testFilePath);if(!testFile .exists()) {...}

2.File类的静态exist方法, File.exist(Path path)

Path filePath = Paths.get(testFilePath);if (Files.exists(filePath) {...}

注意静态方法和非静态方法的区别

字节输入流InputStream

说一下以下这些特点对应哪些Input Stream类

  • 字节数组char[] 作为输入源的Input Stream类是--ByteArrayInputStream

  • 用文件作为输入源的Input Stream类是?--FileInputStream

  • 用字符串作为输入源的是?--StringBufferInputStream

  • 用于多线程之间管道通信的输入源是--PipeInputStream

Q: FilterInputStream是什么?

A: 用于装饰上面这些输入流的,可以叠加,每装饰一层就相当于增加了1个功能。

InputStream inputStream = new FilterInputStream(InputStream)

以下这些特点分别对应哪些FilterInputStream?

  • 装饰后,不仅可读字符串,还可读取例如int、long等java基本类型的是----DataInputStream
    DataInputStream里面会支持readInt、readLong等方法。

  • 装饰后,支持分批缓冲读取读取的是----BufferedInputStream
    创建BufferedInputStream时,我们会通过它的构造函数指定某个输入流为参数。BufferedInputStream会将该输入流数据分批读取,每次读取一部分到缓冲中;操作完缓冲中的这部分数据之后,再从输入流中读取下一部分的数据。

  • 其他:
    PushbackInputStream: 具有1个能回退上一个字节的缓冲区
    ObjectInputStream : 一般用于反序列化读入
    LineNumberInputStream: 可跟踪输入流中的行号

字节输出流OutputStream

OutputStream包含
ByteArrayOutputStream 输出到缓冲区
FileOutputStream 写到文件
PipedOutputStream 写入管道
FilterOutputStream

而FilterOutputStream 包含

  • DataOutputStream (可以out.writexxx各种类型的数据,writeDouble, writeUTF, reader也一样,可以读想要的数据类型)、

  • PringtStream (输出到文件用这个, 该类.println(str)即可写入文件)

  • BufferOutputString

FileOutputStream相关
Q:new FileOutputStream(name, true),这个构造里的true参数是做什么用的?

A:是否支持在文件末追加的意思。

默认是false,指的是覆盖整个文本。

如果设置成true,会在要写入的文件后面追加本次写入的内容。

Q:

BufferOutputStream相关概念(其实是考缓冲区是否需要刷新之类的问题)

  • BufferOutputStream里的flush()方法是做什么的?

  • BufferOutputStream调用close后,会触发flush()来刷新缓冲区吗?

  • BufferOutputStream调用close可能会丢数据吗?

  • BufferOutputStream多次调用close会报错吗?

A:

  • flush把缓冲区里的数据写入文件,并刷新缓冲区

  • close关闭此输出流并释放与此相关联的任何系统资源, 会调用flush,除了flushBuffer,还会调用父类的flush。

  • 不会丢数据,因为上面这条原因。

  • 多次调用不会报错。

Reader和Writer

Q: Reader/Writer和InputStream/OutputStream的区别?
A:

  • InputStream是表示 字节输入流 的所有类的超类
    Reader是用于读取 字符流 的抽象类
    InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别。
    即用Reader读取出来的是char数组或者String ,使用InputStream读取出来的是byte数组。

  • Reader/Writer提供兼容Unicode、面向字符的IO功能,为了国际化

  • 用reader读取标准输入:
    BufferedReader bufr = new BufferedReader(new InputStreamReader(http://System.in));

  • 用Writer进行标准输出:
    BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));

设置编码:

InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "UTF-8");  BufferedReader read = new BufferedReader(isr);

序列化问题

Q: 对某对象进行序列化时, 如何让里面某个敏感成员不被序列化?
A:

  • 方法一:可使用transient关键字处理那个敏感成员

  • 方法二:可以通过覆盖Serializable接口的writeObject和readObject来实现序列化, 但是方法签名必须是private void writeObject(ObjetOutputStream stream) throw IOException;

  • 方法三: 实现Externalizable接口,可自定义实现writeExternal以及readExternal方法

Q: Externalizable和Serializable哪个快?
A: Externalizable更快。

Q: Externalizable需要产生序列化ID吗?

A: 采用Externalizable无需产生序列化ID(serialVersionUID)~而Serializable接口则需要

到此,关于"如何掌握java的IO流"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

方法 输入 文件 缓冲 数据 序列 目录 缓冲区 字节 输出 字符 学习 接口 数组 类型 问题 静态 支持 功能 参数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 咖啡网 互联网科技巨头监管 疫情对互联网科技公司影响 互联网最新的科技有限公司 嘟嘟瓜互联网科技 奇酷互联网络科技公司 狮子座互联网科技培训 上海电发互联网科技有限公司 开启互联网科技时代小说 宁波青枫互联网科技有限公司 银川新华互联网科技职业技术培训学校图片 互联网科技项目计划书材料类 全球顶尖互联网科技公司 互联网科技人工智能实验室 互联网科技公司营业执照怎么办理 烟台灵鸽互联网科技有限公司 工业互联网展湾科技股份有限公司 黑云互联网科技有限公司 互联网金融运营模式中的金融科技 互联网科技企业文化 互联网新科技 南京欣网互联网络科技有限公司 江苏根荣互联网科技 新华互联网科技学院 科技互联网大厂 互联网还是高科技吗 米聚互联网科技南京有限公司排面 燊美集互联网科技有限公司 广州互联网高科技取餐柜 互联网科技大佬云集
0