Java IO流

来源:互联网 发布:pla算法 编辑:程序博客网 时间:2024/06/05 20:47

一、字符流和字节流

Java中的IO流分为字节流和字符流,二者的区别是操纵对象的不同,字节流面向字节,每次操作一个字节,操作对象是字节或者字节数组,而Java用Unicode编码存储字符,一个字符=两个字节,用字节流操作效率不高,且容易出错。字符流就是用来处理字符对象(字符数组或者字符串),一次处理2个字节。字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换。而类 InputStreamReader 和 OutputStreamWriter 处理字符流和字节流的转换。字符流(一次可以处理一个缓冲区)一次操作比字节流(一次一个字节)效率高。 

使用情况:一般用字符流来处理文本数据,而用字节流来处理二进制数据(照片、图像等)。

二、IO的体系结构


三、利用IO读写文件

import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class NormalRW {public static void main(String[] args) {BufferedWriter bw = null;BufferedReader br = null;BufferedInputStream bi = null;BufferedOutputStream bo = null;try {System.out.println("---------write begin ---------");bw =  new BufferedWriter(new FileWriter(new File("e:\\t.txt")));bw.write("Hello World!!!\r\n");bw.write("你好,世界!!!");bw.flush();bw.close();System.out.println("--------- write end ---------");System.out.println("--------- read begin ---------");br = new BufferedReader(new FileReader("e:\\t.txt"));char[] buffer = new char[16];String str = "";int n;while((n=br.read(buffer)) != -1){str += new String(buffer, 0, n);}System.out.println(str);System.out.println("--------- read end ---------");System.out.println("--------- copy picture start ---------");bi = new BufferedInputStream(new FileInputStream("e:\\animal.jpg"));bo = new BufferedOutputStream(new FileOutputStream("e:\\temp.jpg"));byte[] buff = new byte[16];int i;while((i=bi.read(buff)) != -1){bo.write(buff, 0, i);}bo.flush();bo.close();System.out.println("--------- copy picture end ---------");} catch (IOException e) {e.printStackTrace();}}}

                                             
0 0
原创粉丝点击