07java基础之IO与序列化
2017-11-19 10:27
183 查看
IO流是整个Java开发包中最复杂的一个,那么我们一句话概括它的核心: “根据实例化子类的不同,完成的功能也不同”, 整个IO包中包含五个类一个接口:File、OutputStream、InputStream、Writer,Reader;
Serializable。
一、File类:
File类是文件和目录的抽象表示形式,也是整个IO包中唯一一个与文件本身有关的操作类。文件本身是指文件的创建、查询、删除等操作。一个File类被创建时,它就不能再被改变内容。注意:在Java.IO包中的File类本身是一个跨平台的文件操作类,因此在操作中更多的要考虑到各个操作系统的 区别
File类的创建:
建立File对象的时候需要指定一个路径
//兼容不同系统
①File f=new File("e:"+File.separator+"io"+File.separator+"ttt.txt");
②File file=new File("D:\\temp.txt");
file.createNewFile();
一、字节流
输入字节流:
InputStream 所有输入字节流的基类。抽象类。
FileInputStream 读取文件输入字节流。
BufferedInputStream 缓冲输入字节流。该类内部其实就是维护了一个8kb字节数组而已。该类出现的目的是为了提高读读取文件数据的效率。
输出字节流:
OutputStream 所有输出字节流的基类。抽象类。
FileOutputStream 向文件输出数据的输出字节流。
BufferedOutputStream 缓冲输出字节流。该类出现的目的是为了提高向文件写数据的效率。该类内部其实也是维护了一个8kb的字节数组而已。
二、字符流(纯文本)
输入字符流:
Reader 所有输入字符流的基类。抽象类。
FileReader 读取文件字符的输入字符流。
BufferedReader 缓冲输入字符流。该类出现的目的是为了提高读取文件字符的效率并且扩展了功能(readLine()),它内部其实就是维护了一个8192个长度的字符数组。
输出字符流:
Writer 所有输出字符流的基类。抽象类。
FileWriter 向文件输出字符数据的输出字符流。
BufferedWriter 缓冲输出字符流。该类出现的目的是为了提高写文件字符的效率并且扩展了功能(newLine())。
流操作的规律:
流操作的难点:流对象很多,不知道具体用哪个
规律:
(1)第一步:先明确源和目的
源:
文本:用Reader
字节:用InputStream
目的:
文本:用Writer
字节:用OutputStream
(2)第二步:明确是不是纯文本
是:用字符流;
不是:用字节流
(3)第三步:明确流体系后,通过设备来明确具体使用哪个流对象
源设备:
键盘:System.in
硬盘:文件流File
内存:数组流ArrayStream
目的设备:
键盘:System.out
硬盘:文件流File
内存:数组流ArrayStream
序列化:存到内存;反序列化:从内存中读出;
序列化是将对象状态转换为可保持或传输的格式的过程。说明白点就是你可以用对象输出流输出到文件.如果不序列化输出的话.很可能会乱!
实现方式是实现java.io.Serializable接口.这个接口不需要实现任何具体方法.只要implements java.io.Serializable 就好了
Serializable。
一、File类:
File类是文件和目录的抽象表示形式,也是整个IO包中唯一一个与文件本身有关的操作类。文件本身是指文件的创建、查询、删除等操作。一个File类被创建时,它就不能再被改变内容。注意:在Java.IO包中的File类本身是一个跨平台的文件操作类,因此在操作中更多的要考虑到各个操作系统的 区别
File类的创建:
建立File对象的时候需要指定一个路径
//兼容不同系统
①File f=new File("e:"+File.separator+"io"+File.separator+"ttt.txt");
②File file=new File("D:\\temp.txt");
file.createNewFile();
一、字节流
输入字节流:
InputStream 所有输入字节流的基类。抽象类。
FileInputStream 读取文件输入字节流。
BufferedInputStream 缓冲输入字节流。该类内部其实就是维护了一个8kb字节数组而已。该类出现的目的是为了提高读读取文件数据的效率。
输出字节流:
OutputStream 所有输出字节流的基类。抽象类。
FileOutputStream 向文件输出数据的输出字节流。
BufferedOutputStream 缓冲输出字节流。该类出现的目的是为了提高向文件写数据的效率。该类内部其实也是维护了一个8kb的字节数组而已。
二、字符流(纯文本)
输入字符流:
Reader 所有输入字符流的基类。抽象类。
FileReader 读取文件字符的输入字符流。
BufferedReader 缓冲输入字符流。该类出现的目的是为了提高读取文件字符的效率并且扩展了功能(readLine()),它内部其实就是维护了一个8192个长度的字符数组。
输出字符流:
Writer 所有输出字符流的基类。抽象类。
FileWriter 向文件输出字符数据的输出字符流。
BufferedWriter 缓冲输出字符流。该类出现的目的是为了提高写文件字符的效率并且扩展了功能(newLine())。
流操作的规律:
流操作的难点:流对象很多,不知道具体用哪个
规律:
(1)第一步:先明确源和目的
源:
文本:用Reader
字节:用InputStream
目的:
文本:用Writer
字节:用OutputStream
(2)第二步:明确是不是纯文本
是:用字符流;
不是:用字节流
(3)第三步:明确流体系后,通过设备来明确具体使用哪个流对象
源设备:
键盘:System.in
硬盘:文件流File
内存:数组流ArrayStream
目的设备:
键盘:System.out
硬盘:文件流File
内存:数组流ArrayStream
* 复制指定目录下的所有文件到另一个新创建的目录 * 例如:复制d:/io 下的所有文件包括目录 到 d:/new_io * 其中,new_io目录并不存在 public class FileDemo3 { public void showFiles(String path){ //文件的逐层读取找文件夹中的文件夹 File f =new File(path); for(File file:f.listFiles()){ //递归算法调用自己 if(file.isDirectory()){ showFiles(file.getAbsolutePath()); }else { System.out.println(file.getAbsolutePath()+"\t"+file.length()); } // System.out.println(file.getAbsolutePath()); } } public static void main(String[] args) { FileDemo3 f4=new FileDemo3(); f4.showFiles("e:/io"); File f1 =new File("e:"+File.separator+"new"+File.separator+""); f1.mkdirs(); try { f1.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }二、序列化:
序列化:存到内存;反序列化:从内存中读出;
序列化是将对象状态转换为可保持或传输的格式的过程。说明白点就是你可以用对象输出流输出到文件.如果不序列化输出的话.很可能会乱!
实现方式是实现java.io.Serializable接口.这个接口不需要实现任何具体方法.只要implements java.io.Serializable 就好了
相关文章推荐
- java基础8:properties集合,序列化,打印流,commons-IO,对应案例
- JAVA基础知识之IO——对象序列化
- Java基础07IO
- java基础之IO File类和序列化Object
- java基础之IO File类和序列化Object
- Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)
- (转)关于java中的一些IO以及对象的可序列化
- Java SE 基础复习-IO与序列化(2)-文件操作
- java.io 序列化 总结Serializable 和 Externalizable 的区别与联系,以及输出后的乱码问题
- 黑马程序员_Java基础_IO(2)
- Java基础<十六>---> IO之其他流对象
- java基础_IO
- Java基础:序列化和反序列化
- 黑马程序员——JAVA基础——IO(一)---流概述,节点流、处理流、转换流与标准输入输出流、打印流、File文件对象、合并流
- 黑马程序员--Java基础学习笔记【序列化、多线程】
- JAVA基础IO介绍
- 推荐一篇java基础教程----Java IO
- java IO 流Stream 序列化Serializable 文件File
- 再学java基础(6)关于 java IO 知识汇总。
- JAVA基础知识之IO——Java IO体系及常用类