posts - 84,  comments - 54,  trackbacks - 0

一直觉得输入输出流是个令人头痛的问题,今天下午,看完了《21》天上的一个例子,总结了一下。

首先总结一下IO类

  // 一下两组类都是基于字节流的,例如一些图形数据文件的处理
 FileOutputStream
 BufferedOutputStream

 FileInputStream
 BufferedInputStream

// 而以下两组是基于字符流的处理效率会更高一些
 FileReader
 BufferedReader
 InputStreamReader
 
 FileWriter
 BufferedWriter
 OutputStreamWriter


 1     下面这个例子是拷贝一个文件到另外一个文件,文件的形式有两种一种是基于字符型的如:txt文档,或java文档。
 2     而另一种是基于非字符的,而是用字节处理起来更方便。
 3
 4 /*
 5 *以下这段代码是拷贝一个txt文档到另一个位置
 6 */

 7
 8    boolean  eof  =   false ;
 9    int  intChar  =   0 ;
10
11    // 获得对源文件到的连接
12   File source  =   new  FileSource(String sourceName);
13
14    // 让输入流与文件关联起来,同时使用缓冲提高效率
15   FileReader fr  =   new  FileReader(source);
16   BufferedReader br  =   new  BufferedReader(fr);
17
18   File destination  =   new  File(String destinationName);
19   FileWriter fw  =   new  FileWriter(destination);
20   BufferedWriter bw  =   new  BufferedWriter(fw);
21
22    while ( ! eof) {
23      intChar  =  br.read();
24       if (intChar  !=   - 1 ) {
25         bw.writer(( char )intChar);
26      }
else {
27         eof  =   true ;
28      }

29   }

30
31   bw.flush();
32   br.close();
33   bw.close();
34
35 // 以上的方式指示对基于字符的文件有作用,如果换成DOC文件拷贝以后就全是乱码
36 // 所以下面会介绍如何通过给予字节流的方法完整的复制源文件
37


/*
*以下是基于字节流的文件拷贝,可以兼容字符文件的拷贝,例如拷贝
*/


    
boolean  eof  =   false ;   // 文件是否读取完毕
      int  intChar  =   0 ;     // 文件是否已经读到尾

    
// 文件输入流        
     File source  =   new  File(String sourceName);
    FileInputStream fis 
=   new  FileInputStream(source);
    BufferedInputStream bis
=   new  BufferedInputStream(fis);

    
// 文件输出流
    File destination  =   new  File(String destinationName);
    FileOutputStream fos 
=   new  FileOutputStream(destination);
    BufferedOutputStream bos 
=   new  BufferedOutputStream(fos);

    
do {
        intChar 
=  bis.read();
        
if (intChar  !=   - 1 ) {
            bos.writer(intChar);
        }
else {
          eof 
=   true ;
        }

    }
while ( ! eof);
         
        bis.flush();
        bos.close();
        bis.close();

posted on 2006-09-02 03:40 JavaCoffe 阅读(2091) 评论(2)  编辑  收藏 所属分类: J2SE基础学习


FeedBack:
# re: 文件拷程序--小结文件输入输出流
2006-09-02 12:02 | 坏孩子
不错不错.我也在看io,拷贝文件用nio效率高些  回复  更多评论
  
# re: 文件拷程序--小结文件输入输出流
2006-09-12 11:48 | FisherWang
第二种方法简单易懂,挺不错的,只是不能用它去拷贝.gif,还有拷贝rar文件不能打开,文件出错,还有就是更改源文件后重新拷贝好像不起作用  回复  更多评论
  

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


网站导航:
 
<2006年9月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿(5)

随笔分类(80)

收藏夹(1)

最新随笔

积分与排名

  • 积分 - 57541
  • 排名 - 898

最新评论

阅读排行榜