字节缓冲流

//为什么要使用包装流,使用包装流是为了提高读写操作的性能。
public class Packing_flowDemo {
public static void main(String[] args) throws Exception {
File file = new File("file/packing_flow.txt");
//包装流的写法,缓冲区内存大小。1024*8=8192 (byte)
// BufferedOutputStream packing = new BufferedOutputStream(new FileOutputStream(file, true));
// packing.write("大家好!你好吗?how are your !".getBytes());
// packing.close();
//包装流的读写操作。
BufferedInputStream outPacking = new BufferedInputStream(new FileInputStream(file));
byte[] buffer = new byte[1024];
int len = -1;
while ((len = outPacking.read(buffer)) != -1) {
System.out.println(new String(buffer, 0, len));
}
}
}
public static void main(String[] args) throws IOException {//为了代码看起来美观一些,直接抛出去
File file=new File("moves/许嵩 - 素颜 - 现场版.mp3");
File file1=new File("moves/许嵩 - 素颜.mp3");
//text(file, file1);
//text2(file, file1);
//text3(file, file1);
text4(file, file1);
}
private static void text(File file,File file1) throws IOException {
//节点流的方法,一个一个字节的读和写
long begin=System.currentTimeMillis();
FileInputStream in=new FileInputStream(file);
FileOutputStream out =new FileOutputStream(file1);
int len=-1;
while((len=in.read())!=-1){
out.write(len);
}
in.close();
out.close();
System.out.println(System.currentTimeMillis()-begin);//5547毫秒
} private static void text2(File file,File file1) throws IOException {
//缓冲流的写法,一个一个字节的读和写
long begin=System.currentTimeMillis();
BufferedInputStream in=new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream out =new BufferedOutputStream(new FileOutputStream(file1));
int len=-1;
while(in.read()!=-1){
out.write(len);
}
in.close();
out.close();
System.out.println(System.currentTimeMillis()-begin);//63毫秒
} private static void text3(File file,File file1) throws IOException {
//节点流的写法,一次性读取1024个字节
long begin=System.currentTimeMillis();
FileInputStream in=new FileInputStream(file);
FileOutputStream out =new FileOutputStream(file1);
int len=-1;
byte[] buffer=new byte[1024];
while((len=in.read(buffer))!=-1){
out.write(buffer,0,len);
}
in.close();
out.close();
System.out.println(System.currentTimeMillis()-begin);//38毫秒
} private static void text4(File file,File file1) throws IOException {
//缓冲流的写法,一次性读取1024个字节
long begin=System.currentTimeMillis();
BufferedInputStream in=new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream out =new BufferedOutputStream(new FileOutputStream(file1));
int len=-1;
byte[] buffer=new byte[1024];
while((len=in.read(buffer))!=-1){
out.write(buffer,0,len);
}
in.close();
out.close();
System.out.println(System.currentTimeMillis()-begin);//4毫秒
}

Java IO输入输出流 FileWriter 字符流的更多相关文章

  1. java.IO输入输出流:过滤流:buffer流和data流

    java.io使用了适配器模式装饰模式等设计模式来解决字符流的套接和输入输出问题. 字节流只能一次处理一个字节,为了更方便的操作数据,便加入了套接流. 问题引入:缓冲流为什么比普通的文件字节流效率高? ...

  2. java IO输入输出流中的各种字节流,字符流类

    字节流字节流主要是操作byte类型数据,也byte数组为准,主要操作类就是·字节输出流:OutputStream·字节输入流:InputStream字符流在程序中一个字符等于2个字节,那么java提供 ...

  3. Java精选笔记_IO流(字符输入输出流、字符文件输入输出流、字符流的缓冲区)

    字符流 Reader是字符输入流的基类,用于从某个源设备读取字符 Writer是字符输出流,用于向某个目标设备写入字符 字符流操作文件 字符输入流FileReader,通过此流可以从关联的文件中读取一 ...

  4. java io 输入输出流

    数据流分类: 流序列中的数据既可以是未经加工的原始二进制数据, 也可以是经一定编码处理后符合某种格式规定的特定数据. 因此Java中的流分为两种: 1) 字节流:数据流中最小的数据单元是字节 2) 字 ...

  5. Java IO(四)——字符流

    一.字符流 字节流提供了处理任何类型输入/输出操作的功能(因为对于计算机而言,一切都是0和1,只需把数据以字节形式表示就够了),但它们不可以直接操作Unicode字符,因为一个Unicode字符占用2 ...

  6. java IO的字节流和字符流及其区别

    1. 字节流和字符流的概念    1.1 字节流继承于InputStream    OutputStream,    1.2 字符流继承于InputStreamReader    OutputStre ...

  7. Java IO 输入输出流 详解 (一)***

    首先看个图: 这是Javaio 比较基本的一些处理流,除此之外我们还会提到一些比较深入的基于io的处理类,比如console类,SteamTokenzier,Externalizable接口,Seri ...

  8. Java基础(二十七)Java IO(4)字符流(Character Stream)

    字符流用于处理字符数据的读取和写入,它以字符为单位. 一.Reader类与Writer类 1.Reader类是所有字符输入流的父类,它定义了操作字符输入流的各种方法. 2.Writer类是所有字符输出 ...

  9. java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝

    接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...

随机推荐

  1. JavaWeb中验证码的实现

    在Web程序中,验证码是经常使用的技术之一.Web程序永远面临未知用户和未知程序的探测.为了防止恶意脚本的执行,验证码技术无疑是首选方案之一.本文将讨论如何在JSP和Servlet中使用验证码技术. ...

  2. 织梦 dede 笔记

    将项目转移到另一服务器 方法: https://www.genban.org/news/dedecms-13096.html 在实际中,我走的是第二种方法 方法一: 1  后台>系统>备份 ...

  3. 处理mysql主从中断

    主从同步中断跳过处理步骤: slave stop;set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;slave start; 在使用set  global sql_slave_s ...

  4. CAN总线标准帧

    CAN总线是一种串行数据通信协议,其通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充.数据块编码.循环冗余检验.优先级判别等项工作. CAN总线结构 CAN总 ...

  5. HEALTH_WARN too few PGs per OSD (21 < min 30)解决方法

    标签(空格分隔): ceph,ceph运维,pg 集群环境: [root@node3 ~]# cat /etc/redhat-release CentOS Linux release 7.3.1611 ...

  6. 获得网址的Https的SSL证书并且保存到truststore

    一.生成PEM文件 这里以邮件发送接口为例https://api.mailgun.net/v3/,首先运行以下命令: openssl s_client -host -prexit -showcerts ...

  7. PHP $_SERVER变量

    <?php #测试网址: http://localhost/t/test.php?id=5 //获取域名或主机地址 echo $_SERVER['HTTP_HOST']."<br ...

  8. 关于 object-c的@protocol的理解

    从java角度来理解 @protocol 相当于 java 的接口定义,用法也一样 下面是试验例子 @protocol mytestClass <NSObject> - (void) ca ...

  9. js中的Array

    js中的Array 啥是ArrayLike对象 类似,下面这种对象的就是ArrayLike var arraylike = { 0: "a", 1: "b", ...

  10. spring-cloud配置eureka客户端

    spring-cloud配置eureka客户端 eureka用来发现其他程序 需要提前配置eureka服务端,具体看 https://www.cnblogs.com/ye-hcj/p/10292944 ...