目录
File类
- File类是java.io包中很重要的一个类;
- File类的对象可以表示文件,还可以表示目录,在程序中一个File类对象可以代 表一个文件或目录;
- File对象可以对文件或目录的属性进行操作,如:文件名、最后修改日期、文件 大小等;
- File对象无法操作文件的具体数据,即不能直接对文件进行读/写操作
输入及输出的概念
输入输出(I/O) 把电脑硬盘上的数据读到程序中,称为输入,即input,进行数据 的read 操作从程序往外部设备写数据,称为输出,即output,进行数据的write 操作
输入流与输出流
字节流与字符流
从数据流编码格式上划分为
- 字节流
- 字符
字节流中常用类
- 字节输入流 FileInputStream
- 字节输出流 FileOutputStream
字符流中常用类
- 字符输入流 FileReader
- 字符输出流 FileWrite
输入输出节点字节流
流按着数据的传输方向分为:
- 输入流:往程序中读叫输入流。
- 输出流:从程序中往外写叫输出流。
InputStream和OutputStream的子类都是字节流 可以读写二进制文 件,主要处理音频、图片、歌曲、字节流,处理单元 为1个字节。
Reader和Writer的子类都是字符流 主要处理字符或字符串,字符流处 理单元为1个字符。 字节流将读取到的字节数据,去指定的编码表中获取 对应文字
节点流与处理流
根据封装类型不同流又分为
节点流 处理流
- 节点流: 如果流封装的是某种特定的数据源,如文件、字符串、字符串数组等, 则称为节点流
- 处理流: 如果流封装的是其它流对象,称为处理流。 处理流提供了缓冲功能, 提高读写效率,同时增加了一些新的方法
节点流中常用类
- 字节输入流 FileInputStream
- 字节输出流 FileOutputStream
- 字符输入流 FileReader
- 字符输出流 FileWriter
处理流中常用类
- 缓冲字节输出流 BufferedOutputStream
- 缓冲字节输入流 BufferedInputStream
- 缓冲字符输入流 BufferedReader
- 缓冲字符输出流 BufferedWriter
输入输出节点字符流
InputStream的基本方法
读取一个字节并以整数的形式返回(0~255),如果返回-1已到输入流的末尾。
int read() throws IOException
读取一系列字节并存储到一个数组buffer, 返回实际读取的字节数,如果读取前已到输入流的 末尾返回-1
int read(byte[] buffer) throws IOException
关闭流释放内存资源
void close() throws IOException
OutputStream的基本方法
向输出流中写入一个字节数据,该字节数据为参数b的低8位
void write(int b) throws IOException
将一个字节类型的数组中的从指定位置(off)开始的 len个字节写入到输出流
void write(byte[] b, int off, int len) throws IOException
关闭流释放内存资源
void close() throws IOException
Reader 的基本方法
读取一个字符并以整数的形式返回, 如果返回-1已到输入流的末尾。
int read() throws IOException
读取一系列字符并存储到一个数组buffer, 返回实际读取的字符数,如果读取前 已到输入流的末尾返回-1
int read( char[] cbuf) throws IOException
关闭
void close() throws IOException
Writer 的基本方法
向输出流中写入一个字符数据,该字节数据为参数b的16位
void write(int c) throws IOException
一个字符类型的数组中的数据写入输出流
void write( char[] cbuf) throws IOException
将一个字符类型的数组中的从指定位置(off set)开始的 length个字符写入到输出流
void write( char[] cbuf, int off set, int length) throws IOException
关闭
void close() throws IOException
Print流
Print 打印流: 只做输出没有输入 打印流分为字节打印流和字符打印流
PrintWriter: 字符打印流 print方法可以打印各种类型数据 在javaweb项目中,服务器端向客户端响应数据以打印流的方式响应
对象输入输出--对象序列化
- 对象的输出流将指定的对象写入到文件的过程,就是将对象序列化的过 程.
- 对象 的输入流将指定序列化好的文件读出来的过程,就是对象反序列化 的过程。
- 对象的输出流将对象写入到文件中称之为对象的序列化,所以被序列化 对象的类必须要实现 Serializable接口。 Serializable接口中没有任何 方法。当一个类声明实现Serializable接口后, 表明该类可被序列化。 在类中可以生成一个编号 private static final long serialVersionUID = -5974713180104013488L;
- 随机生成 唯一的 serialVersionUID 用来表明实现序列化类的不同版本 间的兼容性。某个类在与之对应的对象已经序列化出去后做了修改,该 对象依然可以被正确反序列化. 如果不显示生成序列号,那么将会隐式生产,但是隐式生成后,类一旦发生 改变,序列号也会随之改变
transient关键字
默认情况下当执行了对象序列化的时候会将类中的全部属性的内容进行全部的序列化操作, 但是很多情况下有一些属性可能并不需要序列化的处理,这个时候就可以在属性的定义上使 用transient关键字来完成了。
private transient String name