Java I O 操作

本章概要:
1. 流模型---------理论上
2. I/O API的分类。
3. 操作I/O流的类。
1>选取管道 0.0
2>创建管道 →_→
3>操作管道(输入流请read,输出流请write)←_←
4>关闭管道 ^.^
特殊代码:文件拷贝
FileInputStream fin= null ;
FileOutputStream fout=null;
try{
fin =new FileInputStream("源文件文件路径包括文件名 ");
fout=new FileOutputStream("目标文件路径及文件名");
byte [] b = new byte [1024] ;
int length = 0;
while ((length =fin.read(b)) != -1){
fout.write(b , 0, length);
fout.flush(); //数据比较大就加上。
}
}catch(xxxxxxx ){
。。。。。。。。。。。。。。。。
}

4. 对象流
1> 创建对象
2>纳入JavaBean规范
3>分布式开发的关键------EJB(企业级JavaBean)的基础
5. File
***************************************************************************************************
I/O流:
数据流 ----------------------------------------------------------目的地
(管道)
输入流: →→→→→→→→ 程序
输出流:程序 →→→→→→→→

注意: 在Java中谈论输入输出是在程序的立场上的。
管道:1 . 字节型管道。(InputStream , OutputStream )
丨(输入) 丨(输出)
2 . 字符型管道。(Reader , Writer )
----------全是抽象类 (用的时候用子类)
--------------最根本的流是字节流。
3. 节点流(1,2都是节点流)和处理流(对象输出则是处理流)。
选择:1.当传输文本数据的时候一般选择字符流。
2.当我们传输二进制数据的时候一般就选择字节流
计算机记事本打开看得懂就是字符流---打开是乱码就是字节流。
doc文件是字节流。(因为有图片,格式 xxxxxx)
----找好管道:
先 FileWriter fw = null ; -------再重新new。
try------catch 部分!要先写 finally{ fw.close();}中的部分。
丨(标准写法)
finally{
if(fw != null){
try{
fw.close();
}catch(IOException e){
e.printStrackTrace( );
}
}
-----------------------------------------------------------------------------
文件路径的\ ------在java中是转义字符:所以可以选择用\\或者/。
在大数据的输入输出的时候,应该加入:
xxx.flush( );


********************************************************************************************
对象流(对象序列化--对象输出流 / 对象反序列化---对象输入流):
1. JavaBean规范之一
2. 产生对象的第二种方式
3. 分布式应用(重量级Web-Service)
4. 管道对接 -------→ 装饰器模式
--------------------------------------------------------------------------
1.对象序列化:将程序中的对象以二进制流的形式进行输出。(父类:OutputStream)
------------------------ObjectOutputStream。

2.对象反序列化:将输入的二进制流直接转化为程序中的一个对象。 (这是产生对象)
---------------------------ObjectInputStream。
------------------------都是处理流---------------------------
不能单独使用,至少搭上一根节点流。
===================================================
1.要求:把一个对象存入文件中。
特点:对象在内存当中是二进制数据。
---------输出
-----对象序列化----
ObjectOutputStream oout =null;//作用:将对象转为二进制码
FileOutputStream fout=null;
try{
fout=new FileOutputStream("目标文件路径及文件名");
oout=new ObjectOutputStream( fout ); //对接的管道
oout.writeObject( 对象 );
}catch(xxxxxxx ){
。。。。。。。。。。。。。。。。
}finally{
关闭------管道

这其中oout.writeObject( 对象 ); 的对象需要实现接口 Serializable
Serializable -------- 这只是一个标识型接口(做一个标记),表示允许
进行某类操作-----不提供任何行为或字段。
-------------------------------------------------------------------------------------------- 2. 对象反序列化。-----第二种产生对象的方式

----定义一个需要接收的对象 为null
ObjectInputStream ois =null;//作用:将对象转为二进制码
FileInputStream fin=null;
try{
fin=new FileInputStream("读取文件路径及文件名");
ois=new ObjectOutputStream( fin ); // 对接的管道
定义的对象=(定义的对象类型)ois.readObject();
}catch(xxxxxxx ){
。。。。。。。。。。。。。。。。
}finally{
关闭------管道
====================================================
细节:
1.要序列化一个类,除了这个类要实现序列化接口,这个类的每一个属性的
类型都要实现该接口。(系统大部分类型,都自己实现了Serializable)
JavaBean规范:应该实现Serializable接口。
2.如果需要让某个属性不参与序列化,那么就用transient对属性进行修饰。
3.序列化的类必须和反序列化的类保持一致。不能进行修改(做任何修改
,都需要重新序列化)。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值