一:创建方式

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. ssh rsa 非对称加密 基本原理

    我们常用的ssh 免密登陆是用了 非对称加密的rsa算法(最为常用),与对称加密的相比会慢一些,但是更安全.秘钥长度超过768位无法破解. 默认长度是2048位(无法破解,非常安全) ssh-keyg ...

  2. Linux 实现与宿主机共享文件夹 Centos7

    (选用的系统 centos7) 01,添加共享目录,右键虚拟机 => 设置 => 选项 => 共享文件夹(只有在虚拟机为关机状态才能添加) 02,开机,查看当前虚拟机的共享目录 =& ...

  3. shell中的逻辑判断while

    w|head -1|awk -F'load average: ' '{print $2}'|cut -d. -f1 #!/bin/bash while true do load=`w|head -1| ...

  4. poi excel超出65536行数限制自动扩展Invalid row number (65536) outside allow

    1.xls一个sheet只能装65536行,多余则报错 poi包导出或写入excel超出65536报错: java.lang.IllegalArgumentException: Invalid row ...

  5. Swoole 异步mysql使用

    <?php class mysql { private $param; public $db; public function __construct() { $this->db = ne ...

  6. C# 调用win32 DLL报错 System.BadImageFormatException

    C# 调用win32 DLL报错  System.BadImageFormatException 项目右键属性->项目设计器->生成->平台->把'默认设置(任何 CPU)'改 ...

  7. Leetcode 题解 Combinations:回溯+求排列组合

    罗列出从n中取k个数的组合数组. 首先,求C(n,k)这个实现,很粗糙,溢出也不考虑,好的方法也不考虑.笨蛋.心乱,上来就写.. 另外,发现在递归中,不能申请太大的数组?貌似不是这个问题,是我自己越界 ...

  8. jquery左侧菜单

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. CAS无锁技术

    前言:关于同步,很多人都知道synchronized,Reentrantlock等加锁技术,这种方式也很好理解,是在线程访问的临界区资源上建立一个阻塞机制,需要线程等待 其它线程释放了锁,它才能运行. ...

  10. MySQL查询优化(转)

    在分析性能欠佳的查询时,应考虑: 1) 应用程序是否正获取超过需要的数据,即访问了过多的行或列. 2) Mysql服务器是否分析了超过需要的行. 如果发现访问的数据行数很大,而生成的结果中数据行很少, ...