lqxue

常用链接

统计

book

tools

最新评论

[收藏]有关java I/O流的问题

FileInputStream 和 FileReader(头ho晕的)
FileReader 会做编码转换,FileInputStream会忠实于原始文件数据。任何形式的Reader都会涉及编码。

BufferedInputStream和BufferedOutputStream
BufferedInputStream: 添加了功能,即缓冲输入和支持 mark 和 reset 方法的能力。创建 BufferedInputStream 时即创建了一个内部缓冲区数组。读取或跳过流中的各字节时,必要时可根据所包含的输入流再次填充该内部缓冲区,一次填充多个字节。mark 操作记录输入流中的某个点,reset 操作导致在从所包含的输入流中获取新的字节前,再次读取自最后一次 mark 操作以来所读取的所有字节。
BufferedOutputStream:该类实现缓冲的输出流。通过设置这种输出流,应用程序就可以将各个字节写入基础输出流中,而不必为每次字节写入调用基础系统。

BufferedReader和FileReader
BufferedReader :由Reader类扩展而来,提供通用的缓冲方式文本读取,而且提供了很实用的readLine,读取分行文本很适合,BufferedReader是针对Reader的,不直接针对文件,也不是只针对文件读取。 
FileReader 是由java.io.InputStreamReade扩展来的,是针对文件读取的。实际使用时往往用   BufferedReader   bufferedreader   =   new   BufferedReader(new   FileReader("test.conf"));先建立一个文件reader,再用BufferedReader读。  
FileInputStream和Reader 
FileInputStream: 扩展自java.io.InputStream,InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别。用 Reader读取出来的是char数组或者String   ,使用InputStream读取出来的是byte数组。  
Reader:Reader 类及其子类提供的字符流的读取char(16位),InputStream及其子类提供字节流的读取byte(8位),所以FileReader类是将文 件按字符流的方式读取,FileInputStream则按字节流的方式读取文件,BufferedReader的作用是提供缓冲, InputStreamReader可以将读如stream转换成字符流方式(即reader)是reader和stream之间的桥梁

BufferedInputStream和BufferedOutputStream的一个例子
import java.io.*;

public class BufferedStreamDemo...{
    public static void main(String[] args)...{
        try...{
            byte[] data=new byte[1];
           
            File srcFile=new File("BufferedStreamDemo.java");
            File desFile=new File("BufferedStreamDemo.txt");
           
            BufferedInputStream bufferedInputStream=new BufferedInputStream(new FileInputStream(srcFile));
            BufferedOutputStream bufferedOutputStream=new BufferedOutputStream(new FileOutputStream(desFile));
           
            System.out.println("复制文件: "+srcFile.length()+"字节");
           
            while(bufferedInputStream.read(data)!=-1)...{
                bufferedOutputStream.write(data);
            }
           
            //将缓冲区中的数据全部写出
            bufferedOutputStream.flush();
           
            System.out.println("复制完成");
           
            //显示输出BufferedStreamDemo.txt文件的内容
            bufferedInputStream =new BufferedInputStream(new FileInputStream(new File("BufferedStreamDemo.txt")));
            while(bufferedInputStream.read(data)!=-1)...{
                String str=new String(data);
                System.out.print(str);
            }
           
            bufferedInputStream.close();
            bufferedOutputStream.close();           
           
        }catch(ArrayIndexOutOfBoundsException e)...{
            System.out.println("using: java useFileStream src des");
            e.printStackTrace();
        }catch(IOException e)...{
            e.printStackTrace();
        }
    }
}

posted on 2008-07-09 17:04 lqx 阅读(257) 评论(0)  编辑  收藏 所属分类: java


只有注册用户登录后才能发表评论。


网站导航: