标签:java io
1、字符流与字节流 字节流可以处理所有类型的数据,包括图片,文字,音频、视频等。在读取时,读到一个字节就返回一个字节。 在Java中对应的类都以Stream结尾。 字符流中仅能处理纯文本数据,如txt文本等。 在Java中对应的类都以Writer或者Reader结尾 2、字符、字节与编码 字节是通过网络传输信息或者在硬盘、内存中存储信息的单位,是计算机信息技术用于计量存储容量和传输容量的计量单位。 1个字节等于8位二进制,即一个8位的二进制数。如0X01,0XFA等等 字符是人们使用的记号,是抽象意义上的一个符号,如‘1‘,‘中‘,‘a‘,‘$‘ 等等 字符集(Charset)也称作“编码”,各个国际和地区所制作不同ANSI编码标准中,都只规定了各自语言所需的“字符”。这些ANSI编码标准规定的内容包含两层含义: 1)使用哪些字符。也就是说哪些汉字、字母和符号会被收入标准中,所包含的“字符”的合集就叫“字符集”。 2)规定每个“字符”分别使用一个字节还是多个字节进行存储,使用哪些字节来存储,这个规定就叫“编码”。 3、下面是一个字符流读写例子: package cn.lebo; import java.io.*; public class TestStream { public static void main(String[] args) { try { FileInputStream fis = new FileInputStream("1.gif"); FileOutputStream fos = new FileOutputStream("1.new.gif"); byte input[] = new byte[10]; while(fis.read(input) != -1){ fos.write(input); } fis.close(); fos.close(); System.out.println("copy done"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } 4、下面是一个使用带缓冲的字节流读取数据的例子 package cn.lebo; import java.io.*; public class TestBufferedByteStream { public static void main(String[] args) { try { FileInputStream fis = new FileInputStream("Microsoft Office 2010.iso"); BufferedInputStream bis = new BufferedInputStream(fis,10000); FileOutputStream fos = new FileOutputStream("Microsoft Office 2010.new.iso"); BufferedOutputStream bos = new BufferedOutputStream(fos,10000); byte data[] = new byte[5000]; int count = 0; long before = System.currentTimeMillis(); while(bis.read(data) != -1){ bos.write(data); count ++; } fis.close(); bos.close(); fos.close(); bos.close(); System.out.println("读写了" + count + "次"); System.out.println("耗费了" + (System.currentTimeMillis() - before) + "ms"); } catch (IOException e) { e.printStackTrace(); } } }
本文出自 “leboit” 博客,谢绝转载!
标签:java io
原文地址:http://leboit.blog.51cto.com/1465210/1688601