黑马程序员-Java基础---IO流介绍

来源:互联网 发布:微软office软件 编辑:程序博客网 时间:2024/06/05 11:00

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

一、IO的介绍

IO流用来处理设备之间的数据传输

Java对数据的操作是通过流的方式
Java用于操作流的对象都在IO包中

二、流按操作数据分为两种:字节流与字符流 。

流按流向分为:输入流,输出流。

三、字节流包括:

InputStream 

FileInputStream

BufferedInputStream

OutputStream

FileOutputStream

BufferedOutputStream

字符流包括:

Writer

FileWriter

BufferedWriter

Reader

FileReader

BufferedReader

四、应用范围:

字节流可以操作文本文件和媒体文件之类的

字符流是专门操作文本文件的

五、字符流和字节流的应用

1、字符流

如下代码:

public static void copyFile_1()throws Exception{FileReader fr = new FileReader("C:\\Users\\Administrator\\Desktop\\路线.txt");FileWriter fw = new FileWriter("C:\\Users\\Administrator\\Desktop\\路线_copy1.txt");char[] ch =new char[1024];int len = 0;while ((len=fr.read(ch))!=-1){fw.write(ch);}fw.close();fr.close();}

这是加入了字符数组用来缓存数据,提高了效率,优化了操作

还有就是利用BufferedReader和BufferedWriter来提高效率

如下代码:

public static void copyFile_2()throws Exception{BufferedReader bufr = new BufferedReader(new FileReader("C:\\Users\\Administrator\\Desktop\\路线.txt"));BufferedWriter bufw = new BufferedWriter(new FileWriter("C:\\Users\\Administrator\\Desktop\\路线_copy2.txt"));//本身就是缓冲区,就不加数组进行存储了String str = null;while ((str=bufr.readLine())!=null){bufw.write(str);bufw.newLine();}bufr.close();bufw.close();}

BufferReader拥有一个readLine()功能,可以大大提高效率

2、字节流

字节流可以操作文本可以操作媒体文件,因为字符流就是为操作文本文件而生的,所以字节流一般用来操作媒体文件

如复制照片,代码如下代码:

public static void copyPicture_1()throws Exception{BufferedInputStream bufi = new BufferedInputStream(new FileInputStream("C:\\Users\\Administrator\\Desktop\\2.jpg"));BufferedOutputStream bufo = new BufferedOutputStream(new FileOutputStream("C:\\Users\\Administrator\\Desktop\\2_copy.jpg"));byte[] buf = new byte[1024];int len =0;while ((len=bufi.read(buf))!=-1){bufo.write(buf,0,len);}bufi.close();bufo.close();}

还可以用来操作视频

代码如下:

public static void copyFilm()throws Exception{long start = System.currentTimeMillis();BufferedInputStream bufi = new BufferedInputStream(new FileInputStream("F:\\迅雷下载\\[阳光电影www.ygdy8.com].女狙击手.BD.720p.中文字幕.rmvb"));BufferedOutputStream bufw = new BufferedOutputStream(new FileOutputStream("C:\\Users\\Administrator\\Desktop\\女狙击手.rmvb"));byte[] buf = new byte[1024*30];int len =0;while ((len=bufi.read(buf))!=-1){bufw.write(buf,0,len);}bufi.close();bufw.close();long end = System.currentTimeMillis();int minute = (int)((end-start)/1000);System.out.println(minute);}
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

0 0
原创粉丝点击