关闭

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

206人阅读 评论(0) 收藏 举报

------<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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1766次
    • 积分:112
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档