HTML5技术

【Java IO流】字节流和字符流详解 - 云开的立夏(4)

字号+ 作者:H5之家 来源:H5之家 2017-09-15 15:06 我要评论( )

运行结果(效率): (3) 批量字节进行文件的拷贝,不带缓冲的字节流(就是上面第三点最初的案例的代码) * 字节批量拷贝文件,不带缓冲 copyFile(File srcFile,File destFile) throws IOException{ 5 if (! srcFi

运行结果(效率):

(3)批量字节进行文件的拷贝,不带缓冲的字节流(就是上面第三点最初的案例的代码)

* 字节批量拷贝文件,不带缓冲 copyFile(File srcFile,File destFile)throws IOException{ 5 if(!srcFile.exists()){ IllegalArgumentException("文件:"+srcFile+"不存在"); 7 } 8 if(!srcFile.isFile()){ IllegalArgumentException(srcFile+"不是一个文件"); 10 } 11 FileInputStream in =new FileInputStream(srcFile); 12 FileOutputStream out =new FileOutputStream(destFile); [] buf=new byte[8*1024]; 15 int b; 16 while((b=in.read(buf, 0, buf.length))!=-1){ 17 out.write(buf, 0, b); } 20 in.close(); 21 out.close(); 22 }

View Code

运行结果(效率):

(4)批量字节进行文件的拷贝,带缓冲的字节流(效率最高,推荐使用!!)

* 多字节进行文件的拷贝,利用带缓冲的字节流 copyFileByBuffers(File srcFile,File destFile)throws IOException{ 5 if(!srcFile.exists()){ IllegalArgumentException("文件:"+srcFile+"不存在"); 7 } 8 if(!srcFile.isFile()){ IllegalArgumentException(srcFile+"不是一个文件"); 10 } 11 BufferedInputStream bis=new BufferedInputStream(new FileInputStream(srcFile)); 12 BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(destFile)); [20*1024]; 14 int c; 15 while((c=bis.read(buf, 0, buf.length))!=-1){ 16 bos.write(buf, 0, c); } 19 bis.close(); 20 bos.close(); 21 }

运行结果(效率):

注意:

  • 批量读取或写入字节,带字节缓冲流的效率最高,推荐使用此方法。

  • 当使用字节缓冲流时,写入操作完毕后必须刷新缓冲区,flush()。

  • 不使用字节缓冲流时,flush()可以不加,但是最好加上去。
  • 六、字符流

    首先我们需要了解以下概念。

    1)需要了解编码问题---->转移至《计算机中的编码问题》

    2)认识文本和文本文件

    java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码)

    文件是byte byte byte...的数据序列

    文本文件是文本(char)序列按照某种编码方案(utf-8,utf-16be,gbk)序列化byte的存储

    3)字符流(Reader Writer)

    字符的处理,一次处理一个字符;

    字符的底层依然是基本的字节序列;

    4)字符流的基本实现

    InputStreamReader:完成byte流解析成char流,按照编码解析。

    OutputStreamWriter:提供char流到byte流,按照编码处理。

    -------------------------Reader和Writer的基本使用-------------------------------

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • this的用法 – JavaScript深入浅出(二) - OkayChen

      this的用法 – JavaScript深入浅出(二) - OkayChen

      2017-09-15 12:00

    • JavaScript: 使用 atan2 来绘制 箭头 和 曲线 - 救火队长

      JavaScript: 使用 atan2 来绘制 箭头 和 曲线 - 救火队长

      2017-09-14 08:04

    • 大龄程序员肉翻记录【一】 - JavaNerd

      大龄程序员肉翻记录【一】 - JavaNerd

      2017-09-13 09:01

    • Java基础精选,你答对了几道? - 小柒2012

      Java基础精选,你答对了几道? - 小柒2012

      2017-09-09 17:11

    网友点评
    S