本文比较详细的记录了使用使用字节流和字符流对文件进行写入,读取,复制的操作
1.字节流

package com.yzy.io;import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;/*** @className Test1.java* @author yangsir* @version V1.0* @date 2019年8月10日-下午4:13:33* @description**/
public class Test1 {public static void main(String[] args) throws IOException {// 打开文件时可能出现异常所以这里要抛出File file = new File("f:/test/yzy.txt");// 创建这个路径下文件的映射Writer w = new FileWriter(file);// 字符流一般用FileWriter来写入内容,如果文件不存在,这里的FileWriter会自动包装File从而创建出一个新文件w.write("字符流:主要用来处理字节或二进制对象");// 写入内容w.flush();// 写入内容后要刷新缓冲区w.close();// 关闭write流FileReader r = new FileReader(file);// 创建一个FileReader对象来读取文件内容char[] ch = new char[3];// 每次要读取的字符数int len;// 用来记录读取的长度while ((len = r.read(ch)) != -1) {// 当len为-1时说明文件已被读完,不等于时说明还可以继续读String s = new String(ch, 0, len);// 这里用new String来创建一个新对象,来获取所需要的字符的部分System.out.print(s);// 输出}r.close();// 最后要关闭read流FileReader fr = null;// 先创建一个fr用来读文件FileWriter fw = null;// 然后创建fw来写入新文件// 这里可能出现异常所以使用try块try {fr = new FileReader(new File("f:/test/yzy.txt"));// 读旧文件fw = new FileWriter(new File("f:/test/yzy1.txt"));// 创建FileWriter来写入内容char[] ch1 = new char[1024];// 此处参考上面int len1;while ((len1 = fr.read(ch1)) != -1) {fw.write(ch1, 0, len1);}// 两个catch块必须把子类写在前面,子类为文件找不到异常,父类为读写文件失败} catch (FileNotFoundException e) {e.printStackTrace();// 如果找不到就会让程序可以继续运行而且告诉你程序异常详细位置} catch (IOException e) {e.printStackTrace();} finally {// 复制成功或者失败都要关掉文件,所以放在finally块中try {if (fw != null)// 使用完毕,如果有内容,就可以关掉了fw.close();// 关闭write流,后打开先关闭if (fr != null)// 使用完毕,如果有内容,就可以关掉了fr.close();// 关闭read流} catch (IOException e) {// 如果没有内容则报一个读写文件失败e.printStackTrace();}}}
}

2.字符流

package com.yzy.io;import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;/*** @className Test2.java* @author yangsir* @version V1.0* @date 2019年8月10日-下午5:28:25* @description**/
public class Test2 {public static void main(String[] args) throws IOException {// 字节流与字符流相同的部分我就不写了String s = "字符流:主要用来处理字符或字符串";File file = new File("f:/test/yzy.txt");FileOutputStream out = new FileOutputStream(file, false);// 输出流// FileOutputStream的write方法不能写入字符串但是我们可以通过String类提供的getBytes()方法来转换为字符数组out.write(s.getBytes());// 这里如果写成(字符串长度,开始值,结束值)这种形式会出现问题,因为传入的中文// out.flush();这里不刷新缓存是因为字符流中close可以刷新out.close();FileInputStream in = new FileInputStream(file);// 输入流byte[] bu = new byte[1024];// 每次要读取的字节数int len = 0;// 用来记录读取的长度while ((len = in.read(bu)) != -1) {System.out.println(new String(bu, 0, len));}in.close();// 复制与字符流一样FileInputStream fis = null;FileOutputStream fos = null;try {fis = new FileInputStream("f:/1.avi");fos = new FileOutputStream("f:/2.avi");byte[] bytes = new byte[1024]; // 长度3看性能 长度为1024看性能int len1;while ((len1 = fis.read(bytes)) != -1) {fos.write(bytes, 0, len1);// 写入(字符串长度,开始值,结束值),这里我们传的是视频所以这样写}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {if (fos != null) {fos.close();}if (fis != null) {fis.close();}} catch (IOException e) {e.printStackTrace();}}}
}

附:流的分类

三大类:1)按数据单位:字节流(一般用于视频、音频等1字节 =  8bit)字符流(一般用与文本文件1字符 = 16bit)2)按流向分类:输入流 输出流3)按角色分类:节点流 处理流(缓冲流)

各种流关系:

抽象父类 字节流(实现抽象类) 缓冲流(处理流)
字节流
InputStrem(输入) FileInputStream BufferdInputStream
OutputStrem(输出) FileOutputStream BufferdOutputStream
字符流
Reder(输入) FileReader BuffreedReader
Writer(输出) FlieWriter BuffreedWriter

使用字节流和字符流对文件进行操作相关推荐

  1. 字节流和字符流复制文件内容实例

    字节流和字符流复制文件内容实例 字节流: import java.io.File; import java.io.FileInputStream; import java.io.FileOutputS ...

  2. 字节流与字符流对文件复制的效率

    字节流与字符流在用于文件复制时效率差距较大 分别对文件夹下的txt文件,jpg文件与mp4文件进行复制粘贴操作,并使用日期类进行运行时间记录,比较几种方法的效率. public class copy ...

  3. 【java作业】2、 编写两个函数,分别使用字节流、字符流实现文件的拷贝;点击按钮,将第三个文本框的字符串的值设置为第一个文本框的字符串+第二个文本框的字符串。

    拷贝文件 : public static void copy1(String a,String b) throws IOException {FileInputStream input = new F ...

  4. java语言中定义的字节输出流_Java语言中的输入输出流包括字节流、字符流、文件流、对象流以及线程之间通信的管道流,【 】包中的类...

    [单选题]肥胖是体内中性脂肪过多积聚的表现,超过标准体重多少者为肥胖 A. 超过标准体重10%以上 B. 超过标准体重15%以上 C. 超过标准体重20%以上 D. 超过标准体重25%以上 E. 超过 ...

  5. python字节流和字符流_字符流与字节流

    [一]写在前面 简单总结一下分别用(一直混淆的)字节流or字符流读写文件. [二]字节流 2.1 字节流介绍 程序中的输入输出都是以流的形式保存的(输入流or输出流),流中保存的实际上全都是字节(一个 ...

  6. 字节流转化为文件流_JAVA IO分析一:File类、字节流、字符流、字节字符转换流...

    因为工作事宜,又有一段时间没有写博客了,趁着今天不是很忙开始IO之路:IO往往是我们忽略但是却又非常重要的部分,在这个讲究人机交互体验的年代,IO问题渐渐成了核心问题. 一.File类 在讲解File ...

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

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

  8. java字节流分为_Java文件流可分为字节流和字符流。

    [单选题]TCP 和 UDP 协议的相似之处是 () [单选题]That was the first time I ______ French with a foreigner. [判断题] [判断题 ...

  9. Java文件流字节流和字符流的区别

    字节流和字符流的区别: 读写单位不同:字节流以字节(8bit)为单位, 字符流以字符为单位 处理对象不同:字节流能处理所有类型的文件,包括图片,视频等,而字符流只能处理字符类型的数据 字节流:一次读入 ...

最新文章

  1. HDU 4951 Multiplication table(2014 Multi-University Training Contest 8)
  2. linux ssh 登录后 空闲断开 解决方法
  3. 关于在hdfs上对数据创建外部表的原因
  4. 电脑动态屏保_8款电脑软件,每一款都能让你的电脑更好用
  5. beego之context新老版本使用
  6. Sublime Text 2 VS Vim
  7. 8255数码管显示0到9_汇编语言--键盘扫描及显示实验(含代码解释)
  8. webview是什么东西_做性能优化前需要考虑什么?
  9. perl 切换 dnspod 域名记录
  10. 大多数微型计算机都是基于,基于PCI总线数据采集系统的设计
  11. 杂牌机刷入Xposed框架
  12. psn注册什么服务器,怎么注册PSN港服账号?PSN港服官网注册教程
  13. 迅雷离线下载节点分布
  14. python词云背景图_python数据分析可视化,制作你想要的背景图词云
  15. PS:换背景天空(简单抠图)
  16. 第一章 SQL中使用的符号
  17. 计算机图形学应用题,计算机图形学教学大纲
  18. linux 起网口up_【Linux】ubuntu或linux网卡配置/etc/network/interfaces
  19. linux 16.04 密码,诡异的 登录 Linux / Ubuntu 16.04 系统 时, 系统提示 登录密码错误 之谜 !...
  20. 充分利用 cpu_如何充分利用云

热门文章

  1. 分布式数据库集成解决方案
  2. 使用Weinre调试webapp
  3. 读者写者问题浅析(代码实现)
  4. 派森python教程_Python系列教程一Python入门(一)
  5. 士兵队列训练问题 (HDU - 1276)
  6. MYSQL数据库四种储存引擎
  7. 3Par 8000存储的一些命令
  8. QT:Qt设计师的使用 designer
  9. python爬虫js逆向加密,Web爬虫处理参数js加密、js混淆、js逆向
  10. 疯狂的大柚柚带你玩转MSP-ESP430G2(基础篇)----(十)定时计数器