I0流
1.IO流概述
IO可以完成硬盘文件的读和写
IDEA中的默认路径
2.FileInputStream
- read()方法 (读一个字节,返回字节的内容)
- read(bate[ ])方法 (都一个字节数组,返回读取的字节数量)
3.FileOutputStream
输出流执行完之后需要立马进行刷新(清空管道),否则容易数据丢失
3.文件拷贝
进行拷贝时 ,读完之后,读到的内容存到了 内存中的byte数组里;需要立马进行写,写的时候是将byte数组里的内容写入硬盘指定的文件中
输出流/输入流执行完之后 需要在finally里进行手动关闭
输出流与输入流的关闭需要分开try(一起try的时候,一个出现异常,会影响另外一个流的关闭)
4.FileReader
是字符输入流 ,针对char数组进行操作的,可指定每次读几个字符。
读完之后需要调用 string(#,#,#)构造方法,将读到的内容转成字符串类型,读多少转多少。
只能读取普通文本(word文档不属于普通文本),java文件是普通文本文件(能用记事本进行编辑的都是普通文本文件)
5.BufferedReader
带有自动缓冲区的字符输入流,不需要自定义char数组,自带缓冲。
1…readLine()方法
//实现一行一行读取
//.readLine()方法
package IOStreamTest;
import java.io.*;
public class main {
public static void main(String[] args) throws IOException {
//需要使用节点流进行一次包装
FileReader reader=new FileReader("temp2.txt");
//当一个流的构造方法中需要一个流的时候,这个被传入的流叫做:节点流
//外部负责包装的流称为“ 包装流”,也叫“处理流”
BufferedReader in = new BufferedReader(reader);
String s=null;
while ((s=in.readLine())!=null){
System.out.println(s);
}
in.close();//只需要关闭包装流 ,内部的节点流不需要关闭(会内部源代码中进行自动关闭)
}
}
6.转换流(InputStreamReader)
为了解决BufferedReader 的构造方法只能使用字符流时使用
简写方法如下:
7.PrintStream(标准的字节输出流)
将输出日志 输出到指定文件
**拓展:自定义日志
**
8.File类
是文件和目录路径名的抽象表达形式
9.序列化与反序列化
一次性序列化多个对象
10.transient关键字(游离的)
这个关键字 表示不参与序列化
11.序列化版本号
java虚拟机识别一个类时 ,先判断类名,如果类名一致,再通过序列化版本号区分
建议创建类时 ,手动设置序列化版本号
12.IO流和Properties(属性)的联合使用
一个很好的设计理念:以后经常改变的数据,可以单独写到一个文件中,使用程序动态读取,将来只需要修改这个文件的内同,Java代码不需要改动,不需要重新编译,服务器也不需重启。就可以拿到动态信息。
类似以上的机制的这种文件被称为配置文件,并且当配置文件的内容格式是:
key1 = value
key2 = value
的时候,我们把这种配置文件叫做属性配置文件
java 规范中有 要求 :属性配置文件以.Properties结尾,但这个不是必须的。