第十五章总结

一.输入/输出流

1.输入流

InputStrema类 是字节输入流的抽象类,它是所有字节输入流的父类

该类中所有方法遇到错误都会引发IOException异常。

read()方法:从输入流中读取数据的下一个字节。返回0~255的int字节值。如果因为已经到达流末尾而没有可用的字节,则返回值为-1.

read(byte[] b):从输入流中读入一定长度的字节,并以整数的形式返回字节数。

mark(int readlimit)方法:在输入流的当前位置放置一个标记,readlimit参数告知此输入流在标记位置失效之前允许读取的字节数。

reset()方法:将输入指针返回到当前所做的标记处。

skip(long n)方法:跳过输入流上的n个字节并返回实际跳过的字节数。

markSupported()方法:如果当前流支持mark()/reset()操作就返回true().

close方法:关闭此输入流并释放与该流关联的所有系统资源。

2.输出流

OutputStream类是字节输出流的抽象类,此抽象类是表示输出字节流所有类的超类。

OutputStream类中的所有方法均返回void,在遇到错误时会引发IOException异常。

write(int b)方法:将指定的字节写入此输出流。

write(byte[] b)方法:将b个字节从指定的byte数组写入此输出流。

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

flush()方法:彻底完成输出并清空缓存区。

close()方法:关闭输出流。

二.File类

1.文件的创建与删除

(1)File(String pathname)

该构造方法通过将给定的路径名字符串转化为抽象路径名来创建一个新File实例。语法:

new File(String pathname)

其中,pathname代表路径名称(包含文件夹)

(2)File(String parent,String child)

该构造方法根据定义的父路径和子路径字符串(包含文件名)创建一个新的File对象。语法:

new File(String parent,String child)

parent:父路径字符串。

child:子路径字符串。

(3)File(File f,String child)

该构造方法根据 f 抽象路径名和child路径名字符串创建一个新的File实例。语法:

new File(File f,String child)

f:父路径对象。

child:子路径字符串。

【例15.1】在D盘创建文本文件

代码:

结果:

若D盘下没有word.txt文件,则会创建该文件并输出如下内容:

若D盘下有word.txt文件,则会删除该文件并输出如下内容:

2.获取文件信息

【例15.2】读取文本文件的名称、长度和隐藏属性

代码:

结果:

file.listFiles() 获取该文件夹下所有文件(含文件夹)
file.isDirectory() 判断该文件是否是文件夹

练习:获取D盘中的一个文件夹里内容

代码:

结果:

三.文件输入/输出流

1.FileInputStream与FileOutputStream

FileInputStream类常用的构造方法:

FileInputStream(String name)

FileInputStream(File file)

第一个构造方法使用给定的文件名 name创建一个FileInputStream对象,第二个构造方法使用File对象创建FileInputStream对象。

【例15.3】向文本文件中写入内容,再读取出来

代码:

结果

2.FileReader和FileWriter类

FileReader类和FileWriter类对应了FileInputStream类和FileOutputStream类。FileReader类顺序地读取文件,只要不关闭流,每次调用read()方法就顺序地读取源中其余内容,直到源的末尾或流被关闭。

【例15.4】使用字符流读写文本文件

代码:

结果:

四.带缓存的输入/输出流

1.BuffenedInputStream与BufferedOutputStream类

BuffenedInputStream类可以对所有InputStream类进行带缓存区的包装以达到性能的优化。

BuffenedInputStream类的两个构造方法:BuffenedInputStream(InputStream in)

BuffenedInputStream(InputStream in,int size)

BufferedOutputStream类 也有两个构造方法:BufferedOutputStream(OutputStream in)

BufferedOutputStream(OutputStream in,int size)

2.BufferedReader与BufferedWriter类

BufferedReader类常用的方法:

read()方法:读取单个字符

readLine()方法:读取一个文本行,并将其返回为字符串。若无数据可读,则返回null

BufferedWriter类中的方法都返回void,常用的方法

write(String s,int off,int len)方法:写入字符串的某一部分

flush()方法:刷新该流的缓存

newLine()方法:写入一个行分隔符

【例15.5】使用缓冲流读写文本文件

代码:

结果:

五.数据输入/输出流

DataInputStream类DataOutputStream类的构造方法:

复制代码

DataInputStream(InputStream in):使用指定的基础InputStream对象创建一个DataInputStream对象

DataOutputStream(OutputStream out):创建一个新的数据输出流,将数据写入文件的方法。

DataInputStream类提供了将字符串、double数据、int数据、boolean数据写入文件的方法。

DataOutputStream类 只提供了一个readUTF()方法返回字符串。

【例】使用数据流读写文本文件

代码:

结果:

相关推荐
啊阿狸不会拉杆19 分钟前
《算法导论》第 27 章 - 多线程算法
java·jvm·c++·算法·图论
用户8029735654120 分钟前
【水平:编写简单的SpringCloud】用一篇文章精通SpringCloud-1
java
蔡俊锋31 分钟前
Javar如何用RabbitMQ订单超时处理
java·python·rabbitmq·ruby
天天摸鱼的java工程师1 小时前
Snowflake 雪花算法优缺点(Java老司机实战总结)
java·后端·面试
Miraitowa_cheems1 小时前
LeetCode算法日记 - Day 11: 寻找峰值、山脉数组的峰顶索引
java·算法·leetcode
海梨花1 小时前
【从零开始学习Redis】项目实战-黑马点评D2
java·数据库·redis·后端·缓存
共享家95271 小时前
linux-高级IO(上)
java·linux·服务器
Sammyyyyy1 小时前
2025年,Javascript后端应该用 Bun、Node.js 还是 Deno?
开发语言·javascript·node.js
橘子郡1231 小时前
观察者模式和发布订阅模式对比,Java示例
java
指针满天飞1 小时前
Collections.synchronizedList是如何将List变为线程安全的
java·数据结构·list