Java中的输入与输出流详解(7)

3)、如何提高IO操作

缓冲字符流BufferedReader、BufferedWriter和缓冲字节流一样,引进缓冲字符流的目的也是为了提高I/O操作的效率。BufferedReader和BufferedWriter类常用的构造方法如下:

BufferedReader(Obj) ,BufferedWriter(Obj)

它们的方法与Reader类和Writer类中的方法基本相同,同时还有新增的方法。readLine()函数的功能就是读入字符,知道遇到”\n”或”\r”为止。下面的实例讲解了readLine()方法是使用方法:

public static voidmain(String[] args) {
        try {
            FileReader fr = newFileReader("D:\\桌面\\桌面\\安卓开发工具\\学习笔记\\test01.txt");
            BufferedReader br = newBufferedReader(fr);
            String a = br.readLine();
            while (a != null) {             
                System.out.println(a);
                a = br.readLine();
            }
            fr.close();
            br.close();
        } catch (Exception e) {
            System.err.println(e);
        }
    }

4)、通过字符读取文件及写出

字符流读取文件时以单个字符为单位的。一般字符是由多个字节组成的。Java语言内部可将一个字节流转化为字符流,这种转化是有InputStreamReader和OutputStreamWriter来完成的。可以在生成InputStreamReader和OutputStreamWriter类的对象时指定编码规范,也可以使用当前平台的默认编码规范。

InputStreamReader类的构造函数如下:

InputStreamReader(InputStream in)//使用当前平台的默认编码规范

InputStreamReader(InutStream in , String charname)//指定编码规范

OutputStreamWriter类的构造函数如下:

OutputStreamWriter(OutputStream out)

OutputStreamWriter(OutputStream out , String charname)

下面通过实例讲解字节流向字符流转换的过程:

public static voidmain(String[] args) {
        try {
            FileInputStream fis = newFileInputStream("D:\\桌面\\桌面\\安卓开发工具\\学习笔记\\test01.txt");
            //将字节流文件转换为字符流文件
            InputStreamReader isr = newInputStreamReader(fis, "GBK");
            //带缓冲的字符流输入文件
            BufferedReader br = new BufferedReader(isr);
            FileOutputStream fos = newFileOutputStream("D:\\桌面\\桌面\\安卓开发工具\\学习笔记\\test02.txt");
            //将字节流文件转换为字符流文件
            OutputStreamWriter osw = newOutputStreamWriter(fos , "GBK");
            //带缓冲的字符流输出文件
            BufferedWriter bw = newBufferedWriter(osw);
            String str = br.readLine();
            while (str != null) {             
                bw.write(str);
                bw.flush();
                System.out.println(str);
                str = br.readLine();
            }
            br.close();
            bw.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }

刚开始学的时候,大家通常会遇到打印出来的字符出现乱码的情况,这是由于源文件的编码问题或者字符流所指定的编码不支持引起的,在进行编码转换时,一定要看清楚源文件的编码和需要输出的编码,多试几个应该就没问题了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/0717ce79f1828b16de0c05fb901ec02e.html