一:创建方式

1、建立输入(读)对象,并绑定数据源

2、建立输出(写)对象,并绑定目的地

3、将读到的内容遍历出来,然后在通过字符或者字节写入

4、资源访问过后关闭,先创建的后关闭,后创建的先关闭

总结:创建的方式都是差不多的,只不过是使用的输入和输出流不一样。

二:四种流复制文件的例子

1、字节流复制文件

 //1、字节流复制文件
public static void fun(File src,File desc ) throws Exception{
//建立字节流输入(读)对象,并绑定数据源
FileInputStream fis = new FileInputStream(src);
//建立字节流输出(写)对象,并绑定目的地
FileOutputStream fos=new FileOutputStream(desc);
int len=0;
byte[] b=new byte[1024];
//将读到的内容遍历出来,然后在通过字节写入
while((len=fis.read(b))!=-1){
fos.write(b,0,len);
}
//资源访问过后关闭,先创建的后关闭,后创建的先关闭
fos.close();
fis.close();
}

2、字符流复制文件

 //2、字符流复制文件
public static void fun1(File src,File desc) throws Exception{
//建立字符流输入(读)对象,并绑定数据源
FileReader fReader=new FileReader(src);
//建立字符流输出(写)对象,并绑定目的地
FileWriter fWriter=new FileWriter(desc);
int len=0;
char[] b=new char[1024];
//遍历出需复制的文件的字节,一个字符一个字符的写入复制过后的新文件中
while((len=fReader.read(b))!=-1){
fWriter.write(b,0,len);
}
//资源访问过后关闭,先创建的后关闭,后创建的先关闭
fWriter.close();
fReader.close();
}

3、字节缓冲区复制文件

 //3、字节缓冲区复制文件
public static void fun2(File src,File desc) throws Exception{
//建立字节缓冲流输入(读)对象,并绑定数据源
BufferedInputStream bu=new BufferedInputStream(new FileInputStream(src));
//建立字节缓冲流输出(写)对象,并绑定目的地
BufferedOutputStream ou=new BufferedOutputStream(new FileOutputStream(desc));
int len=0;
byte[] by=new byte[1024];
//将读到的内容遍历出来,然后在通过字节写入
while((len=bu.read(by))!=-1){
ou.write(by,0,len);
}
//资源访问过后关闭,先创建的后关闭,后创建的先关闭
ou.close();
bu.close();
}

4、字符缓冲区复制文件

 //4、字符缓冲区复制文件
public static void fun3(File src,File desc) throws Exception{
//建立字符缓冲流输入(读)对象,并绑定数据源
BufferedReader br=new BufferedReader(new FileReader(src));
//建立字符缓冲流输出(写)对象,并绑定目的地
BufferedWriter bw=new BufferedWriter(new FileWriter(desc));
String len="";
char[] c=new char[1024];
//将读到的内容遍历出来,然后在通过字符写入
while((len=br.readLine())!=null){
bw.write(c,0,len.length());
}
//资源访问过后关闭,先创建的后关闭,后创建的先关闭
bw.close();
br.close();
}

调用方法:

方法名(参数1,参数2);

其中我的参数1写的是读的对象也就是数据源,参数2代表的是要写入的目的地

 fun(new File("c:\\bu.txt"),new File("d:\\kk.txt"));

Java中的字节流,字符流,字节缓冲区,字符缓冲区复制文件的更多相关文章

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

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

  2. Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律

    第一讲     IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都 ...

  3. Java IO 转换流 字节转字符流

    Java IO 转换流 字节转字符流 @author ixenos 字节流 输入字节流:---------| InputStream 所有输入字节流的基类. 抽象类.------------| Fil ...

  4. JAVA之旅(二十四)——I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习

    JAVA之旅(二十四)--I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习 JAVA之旅林林总总也是写了二十多篇了,我们今天终于是接触到了I/O了 ...

  5. java基础46 IO流技术(输出字符流/缓冲输出字符流)

    一.输出字符流 1.1.输出字符流体系 --------| Writer:输出字符流的基类(抽象类)  ----------| FileWriter:向文件输出数据输出字符流(把程序中的数据写到硬盘中 ...

  6. 关于java中char占几个字节,汉字占几个字节

    我们平常说,java中char占2个字节,可又说汉字在不通的编码格式中所占的位数是不同的,比如gbk中汉字占2个字节,utf8中多数占3个字节,少数占4个.而所有汉字在java程序中我们都可以简单的用 ...

  7. (19)IO流之字符流FileReader和FileWriter,缓冲字符流---缓冲输入字符流BufferedReader和缓冲输出字符流BufferedWriter

    字符流,读取的文件是字符的时候,有两个基类一个是Reader,一个是Writer这有点拟人的感觉,人直接看懂的是文字 字符流 字节流:读取的是文件中的二进制字节流并不会帮你转换成看的懂得字符 字符流: ...

  8. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_07 缓冲流_4_缓冲流的效率测试_复制文件

    把之前文件复制的代码复制到这里 一个字节一个字节的读取,复制文件 byte数组的形式 缓冲流测试 数组缓冲

  9. JAVA中的字节流与字符流

    字节流与字符流的区别? 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用 ...

随机推荐

  1. 公式for TinyMCE 编辑器@ cnblogs.com

    编辑器截图: 行内公式:\(  f(x,y,z) = 3y^2 z \left( 3 + \frac{7x+5}{1 + y^2} \right)  \) 行间公式:\\(  f(x,y,z) = 3 ...

  2. 系列:这一件月薪30K+的事,我们一起来撮合一下 3

    作者:接地气的陈老师 ----------------------------------------------------------------------------------------- ...

  3. 《算法》第六章部分程序 part 7

    ▶ 书中第六章部分程序,加上自己补充的代码,包括全局最小切分 Stoer-Wagner 算法,最小权值二分图匹配 ● 全局最小切分 Stoer-Wagner 算法 package package01; ...

  4. maven 下载jar失败: resolution will not be reattempted until the update interval of central has elapsed or updates are forced

    Multiple annotations found at this line: - ArtifactTransferException: Failure to transfer com.faster ...

  5. <转载> bat 脚本基本语法 http://blog.csdn.net/bluedusk/article/details/1500629

        bat 脚本基本语法 2007-01-25 10:31 常用命令 echo.@.call.pause.rem(小技巧:用::代替rem)是批处理文件最常用的几个命令,我们就从他们开始学起. = ...

  6. Android 组合控件

    前言 自定义组合控件就是多个控件组合起来成为一个新的控件,主要用来解决多次重复的使用同一类型的布局.比如我们应用的顶部的标题栏,还有弹出的固定样式的dialog,这些都是常用的,所以把他们所需要的控件 ...

  7. 白鹭引擎 - 本地坐标和舞台坐标的转化 ( globalToLocal, localToGlobal )

    class Main extends egret.DisplayObjectContainer { /** * Main 类构造器, 初始化的时候自动执行, ( 子类的构造函数必须调用父类的构造函数 ...

  8. hadoop集群namenode同时挂datanode

    背景:(测试环境)只有两台机器一台namenode一台namenode,但集群只有一个结点感觉不出来效果,在namenode上挂一个datanode就有两个节点,弊端见最后 操作非常简单(添加独立节点 ...

  9. Nginx 设置负载均衡

    1. 在nginx配置文件目录下另外单独创建一个文件用于管理负载均衡配置,这里起名为 fzjh.conf vim /etc/nginx/fzjh.conf #在文件下添加以下内容 upstream m ...

  10. RocketMQ服务搭建_1

    rocketmq是阿里研发,并贡献给Apache的一款分布式消息中间件. RcoketMQ 是一款低延迟.高可靠.可伸缩.易于使用的消息中间件. ACE环境:(Adapted communicatio ...