1. 字符流 FileReader FileWriter BufferedReader BufferedWriter
字节流 FileInputStream FileOutputStream BufferedInputStream BufferedOutputStream
2.字节流 InputStream 读 OutputStream 写
1. 需求:想要操作图片数据,这时就要用到字节流
2. 通过字节流缓冲区复制mp3
3.读取键盘录入 System.out:对应的是标准输出设备,默认是控制台
System.in:对应的是标准输入设备,默认是键盘
4.需求:通过键盘录入数据,当录入一行数据后,就将该行数据进行打印,如果录入的数据是over,那么停止录入。
通过刚才的键盘录入一行数据并打印器大写,发现其实就是读一行数据的原理,也就是readLine方法,那么能不能直接使用readLine方法来完成键盘录入的一 行数据的读取呢?readLine方法是字符流BufferedReader类中的方法,而键盘录入的read方法是字节流InputStream的方法,那么能不能将字节流转成字符流 再使用字符流缓冲去用readLine的方法呢?
读取转换流见下面程序:
5.写入转换流与读取转换流
IO流(异常的日志信息),网上有一个包,log4j
系统信息打印到指定位置的程序如下:
3.File类
1. 用来将文件或者文件夹封装成对象,方便对文件与文件夹进行操作。File对象可以作为参数传递给流的构造函数。了解File类中的常用方法。
File.separator 跨平台的分隔符
2. File类常见方法
1.创建
boolean createNewFile(); 在指定位置创建文件,如果该文件已经存在,则不创建,返回false,和输出流不一样,输出流对象一建立就创立文 件,如果文件已经存在,会覆盖
boolean mkdir; 创建文件夹 boolean mkdirs; 创建多级文件夹
2.删除
boolean delete();删除失败则返回false
void deleteOnExit(); 在程序退出时删除指定文件
3.判断
boolean exists();
isFile();
isDirectory();
isHidden();
isAbsolute(); 是绝对路径
4.获取信息
getName(); getPath();getParent(); getAbsolutePath(); lastModified();length();
3. 练习
1.列出目录下所有内容
2.删除一个带内容的目录。删除原理,在windows中删除目录,从里面往外删除的,既然是从里往外删除,就需要用到递归。
3.将一个指定目录下的java文件的绝对路径,存储到一个文本文档中,建立一个java文件列表文件。
4.Properties是hashtable的子类,也就是说它具备map集合的特点,而且它里面存储的键值对都是字符串。是集合中核IO结束相结合的集合容器
该对象的特点:可以用于键值对形式的配置文件,设置和获取元素见下面程序:
流中数据存储到集合中,用Properties方法实现:
在加载数据时,需要数据有固定格式, 键 = 值
1.练习:用于记录应用程序运行次数,如果使用次数已到,那么给出注册提示,很容易想到的是:计数器。可是该计数器定义在程序中,随着程序的运行而在内存中存 在,并进行自增,可是随着该应用程序的退出,该计数器也在内存中消失了,下一次再启动该程序,又重新开始从0计数,这不是我们想要的,我们想要的是:程序即 使结束,该计数器的值也存在,下次程序启动会先加载该计数器的值并加1后再重新存储起来。所以要建立一个配置文件,用于记录该软件的使用次数。这配置文件使 用键值对的形式,这样便于月度数据,并操作数据
键值对数据是map集合,数据是以文件形式存储,使用IO技术,那么map+io = Properties
配置文件可以实现应用程序数据的共享。程序如下:
5.打印流: 该流提供了打印方法,可以将各种数据类型的数据都原样打印。
字节打印流PrintSteam: 构造函数可以接收的参数类型
1.File对象 2.字符串路径 3.字节输出流
字符打印流 PrintWriter:构造函数可以接收的参数类型
1.File对象 2.字符串路径 3.字节输出流 4.字符输出流
6. 序列流 (合并流) SequenceInputStream 。比如把3个文本文档合并为1个
7.切割文件