java编程之——IO流应用总结

------- android培训、java培训、期待与您交流! ---------

IO(掌握)

(1)IO流的分类:

A:字节流

字节输入流 InputStream

字节输出流 OutputStream

B:字符流

字符输入流 Reader

字符输出流 Writer

(2)FileWriter写入数据

步骤:

A:创建字符输出流对象

B:调用写入数据方法,并刷新缓冲区

C:释放资源

 

代码体现:

FileWriter fw = new FileWriter("a.txt");

 

fw.write("hello,io");

fw.flush();

 

fw.close();


 

问题?

A:创建字符输出流对象做了几件事情?

调用系统功能创建了文件

创建字符输出流对象

把字符输出流对象指向创建的文件

 

B:写数据完毕后,为什么要刷新?

C:为什么要close()?

D:flush()close()的区别?

E:怎么实现数据换行?

F:怎么实现数据追加写入?

(3)FileReader读取数据

步骤:

A:创建字符输入流对象

B:调用读取数据方法,并显示

C:释放资源

 

代码体现:

FileReader fr = new FileReader("a.txt");

//方式1

//一次读取一个字符

int ch = 0;

while((ch=fr.read())!=-1)

{

System.out.print((char)ch);

}

 

 

//方式2

//一次读取一个字符数组

char[] chs = new char[1024];

int len = 0;

while((len=fr.read(chs))!=-1)

{

System.out.print(new String(chs,0,len));

}

 

fr.close();

 


 

(4)案例:

复制文本文件。

 

1IO

(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)到底使用谁?

用记事本打开能读懂的,就用字符流。

否则,用字节流。

如果你根本就不知道,用字节流。

(3)复制文本文件:

9种方式:

字节流:

4

基本流一次读写一个字节

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

高效流一次读写一个字节

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

字符流:

5

基本流一次读写一个字符

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

高效流一次读写一个字符

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

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

 

一般来说,明明知道是文本文件,那么,肯定不用字节流。

那么,如果是使用字符流,有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();

 


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

字节流:

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();

 


 

1:转换流(理解)

(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();

 


把文本文件的数据通过流对象在控制台显示

 

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

BufferddWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

 

String line = null

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

{

bw.write(line);

bw.newLine();

bw.flush();

}

 

bw.close();

br.close();


 

2:打印流(掌握)

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

(2)特点:

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

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

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

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

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

(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();

 


3:序列化流(理解)

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

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

(2)如何实现序列化?

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

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

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

ObjectInputStream:

Object readObject()

ObjectOutputStream:

void writeObject(Object obj)

(4)掌握:

A:看到类实现了序列化接口,就知道该类可以被序列化流对象操作

B:看到类实现了序列化接口,知道点击鼠标就可以解决黄色警告问题

 

4Properties(理解)

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

(2)特点:

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

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

(3)特殊功能:

A:setProperty(String key,String value)

B:getProperty(String key)

  getProperty(String key,String defaultValue)

C:Set stringPropertyNames()

(4)IO流结合的方法:

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

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

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

(5)案例:

查找文件中是否有键为lisi的,如果有,则修改其值为50


你可能感兴趣的:(JAVA基础学习)