Java IO学习

来源:互联网 发布:网站设计优化规划书 编辑:程序博客网 时间:2024/05/18 16:37

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();



未完。。。