Java IO学习


1.Byte Streams 按照字节读取

【1】所有继承自InputStream 和OutputStream都是字节读取的

【2】它的效率是比较低下的,它多用于读取二进制数据,如果是读取字符数据 可以使用下面的Character Streams

示例代码:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyBytes {
    public static void main(String[] args)
        throws IOException {

        FileInputStream in = null;
        FileOutputStream out = null;
        try {
            in = new FileInputStream(
                         "xanadu.txt");
            out = new FileOutputStream(
                         "outagain.txt");
            int c;

            while ((c = in.read()) != -1) {
                out.write(c);
            }

        } finally {
            if (in != null) {
                in.close();
            }
            if (out != null) {
                out.close();
            }
        }
    }
}





2.Character Streams 读取字符数据 自动处理字符集转换


【1】所有继承自Reader&Writer的都是按字符读取

【2】你可以使用InputStreamReader&OutputStreamWriter来实现按照字符读取字节流

【3】注意到,Character Stream与Byte Stream都是使用一个int值来存储获取到的数据,但是Character的数据存储在int值的低16为,Byte的数据存储在int值的低8位

【4】你可以使用BufferedReader&BufferedWriter来实现按照行读取和写入

 使用PrintWriter来实现按照格式写入

        FileReader fr=new FileReader("src/java/net/aviation/javaio/demo.txt");
        //一个字符一个字符读取
//        int ch=0;
//        while((ch=fr.read())!=-1){
//            System.out.print((char)ch);
//        }
        
        //按照行读取
        BufferedReader br=new BufferedReader(fr);
        BufferedWriter bw=new BufferedWriter(new FileWriter("output1.txt"));
        PrintWriter pw=new PrintWriter(new FileWriter("output2.txt"));
        String x=null;
        while((x=br.readLine())!=null){
            System.out.println(x);
            //BufferedWriter竟然没有writeLine方法
            bw.write(x+"\n");
            //PrintWriter可以按行写 也可以按格式写
            pw.println(x);
        }
        br.close();
        pw.close();
        bw.close();
        fr.close();



未完。。。


posted on 2013-05-14 10:06  scugxl  阅读(114)  评论(0编辑  收藏  举报

导航