黑马程序员_IO

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

1、IO流

(1)分类

字节流:

输入流:

InputStream

int read()

int read(byte[] bys)

FileInputStream

BufferedInputStream

输出流:

OutputStream

write(int by)

write(byte[] bys,int index,int len)

FileOutputStream

BufferedOutputStream

字符流:

输入流:

Reader

int read()

int read(char[] chs)

FileReader

BufferedReader

String readLine()

输出流:

Writer

write(int ch)

write(char[] chs,int index,int len)

FileWriter

BufferedWriter

write(String line)

void newLine()

(2)复制文本文件:

9种方式:

字节流:

4种

基本流一次读写一个字节

基本流一次读写一个字节数组

高效流一次读写一个字节

高效流一次读写一个字节数组

字符流:

5种

基本流一次读写一个字符

基本流一次读写一个字符数组

高效流一次读写一个字符

高效流一次读写一个字符数组

高效流一次读写一个字符串

代码体现:

数据源:c:\\a.txt

目的地:d:\\b.txt

BufferedReader br = new BufferedReader(new FileReader("c:\\a.txt"));

BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\b.txt"));

String line = null;

while((line=br.readLine())!=null)

{

bw.write(line);

bw.newLine();

bw.flush();

}

bw.close();

br.close();

(3)复制二进制流数据:(图片,视频,音频等)

字节流:

4种

基本流一次读写一个字节

基本流一次读写一个字节数组

高效流一次读写一个字节

高效流一次读写一个字节数组

代码体现:

数据源:c:\\a.jpg

目的地:d:\\b.jpg

BufferedInputStream bis = new BufferedInputStream(new FileInputStream("c:\\a.jpg"));

BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("d:\\b.jpg"));

byte[] bys = new byte[1025];

int len = 0;

while((len=bis.read(bys))!=-1)

{

bos.write(bys,0,len);

}

bos.close();

bis.close();

2、转换流

(1)如果有字节流对象,为了使用字符流的功能,就必须使用转换流进行操作。

键盘录入数据

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

BufferddWriter bw = new BufferedWriter(new FileWriter("a.txt"));

String line = null;

while((line=br.readLine())!=null)

{

if("over".equals(line))

{

break;

}

bw.write(line);

bw.newLine();

bw.flush();

}

bw.close();

br.close();

3、打印流

(1)打印流是写数据的。

(2)特点:

A:可以写任意数据类型的数据

B:如果启动了自动刷新,能自动刷新,还会换行。println()

C:可以直接往文件写数据

哪些流对象可以直接读写文件?

看构造方法,如果同时有String和File的构造参数,那么该流对象就可以读写文件。

(3)用打印流改进复制文本文件的操作

数据源:c:\\a.txt

目的地:d:\\b.txt

BufferedReader br = new BufferedReader(new FileReader("c:\\a.txt"));

PrintWriter pw = new PrintWriter(new FileWriter("d:\\b.txt"),true);

String line = null;

while((line=br.readLine())!=null)

{

pw.println(line);

}

pw.close();

br.close();

4、序列化流

(1)序列化:把对象按照流一样的方式在网络中传输,或者存储到文本文件

  反序列化:把流数据还原成对象

(2)如何实现序列化?

A:被序列化的对象所属的类必须实现序列化接口

B:用序列化流对象进行操作

(3)序列化(对象)流对象

ObjectInputStream:

Object readObject()

ObjectOutputStream:

void writeObject(Object obj)

5、Properties

(1)是Map体系一个集合类。

(2)特点:

A:可以把集合中的数据保存到文本文件,也可以把文本文件的数据加载到集合中。

B:该集合的键和值都是String类型

(3)特殊功能:

A:setProperty(String key,String value)

B:getProperty(String key)

 getProperty(String key,String defaultValue)

C:Set<String> stringPropertyNames()

(4)和IO流结合的方法:

A:list 通过打印流把数据保存到文件中

B:load 通过任意流把文本中的数据加载到集合中

C:store 通过任意流把数据保存到文件中

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值