Java学习之字节流与字符流

一. 字节流

字节流是在java.io包中操作文件内容的一大类,字节流将文字图片音频等文件转换成字节,进行数据传输。

在字节流中输出数据主要是使用OutputStream完成,输入使的是InputStream。

我们一般用参照物(程序)来判断是输出流,还是输入流。
程序—————文件 输出流 写文件
文件—————程序 输入流 读文件

OutputStream是所有字节输出流的父类
InputStream是所有字节输入流的父类

写入FileOutputStream:

用字节流写入的一般步骤:
1.创建流并绑定写入文件的路径。
2.写入
3.关闭资源

带异常处理的写入

        //带异常处理写入File file = new File("/Users/lanou/Desktop/Test/dnf.txt");//将流的作用域扩大FileOutputStream fos = null;try {fos = new FileOutputStream(file);//写文件fos.write(100);} catch (FileNotFoundException e) {//如果找不到文件 则抛出异常throw new RuntimeException("找不到文件");} catch (IOException e) {throw new RuntimeException("写入失败");}finally {//关闭资源if (fos != null) {//关闭资源try {fos.close();} catch (IOException e) {throw new RuntimeException("关闭失败");}}}
读取FileInputStream

用FileInputStream读取一般有两种
1.用字节读

         FileInputStream fis = new FileInputStream("/Users/lanou/Desktop/Test/dnf.txt");//循环读取文件int num = 0;while ((num = fis.read()) != -1) {System.out.println((char)num);}//关闭资源fis.close();

2.用字节数组读

        FileInputStream fis = new FileInputStream("/Users/lanou/Desktop/Test/dnf.txt");//利用数组 循环读byte[] b = new byte[1024];//接受有效长度int len = 0;while ((len = fis.read(b)) != -1) {//使用字符串构造方法打印System.out.println(new String(b, 0, len));}fis.close();

字节流中的复制文件(边读边写)

        FileInputStream fis = null;FileOutputStream fos = null;try {fis =new FileInputStream("/Users/lanou/Desktop/dnf.txt");fos = new FileOutputStream("/Users/lanou/Desktop/newdnf.txt");byte[] bs = new byte[1024];int len = 0;while ((len = fis.read(bs)) != -1) {//写入 只写入有效部分fos.write(bs, 0, len);}} catch (FileNotFoundException e) {throw new RuntimeException("文件找不到");}catch (IOException e) {throw new RuntimeException("读写失败");}finally {if (fos != null) {try {fos.close();} catch (IOException e) {throw new RuntimeException("关闭失败");}finally {//关闭第二个流 确保两个流都能关闭if (fis != null) {try {fis.close();} catch (IOException e) {throw new RuntimeException("关闭失败");}}}}}

二.字符流

字符流也是在java.io包中操作文件内容的一大类,字符流只用于操作文档。
在字符流中输出主要是使用Writer类完成,输入流主要使用Reader类完成。

Writer是所有字符输出流的父类。
Reader是所有字符输入流的父类。

FileWriter写入:
        FileWriter fw = new FileWriter("/Users/lanou/Desktop/Test/dnf.txt");//写入文件fw.write(100);//刷新(会将内容写入到文件中)fw.flush();//字符数组char[] c = {'3', '7'};fw.write(c);fw.flush();//字符串直接写入 fw.write("王司徒又有何作为?\n");fw.write("皓首匹夫,苍髯老贼!\n");fw.write("二臣贼子,你枉活七十有六,\n");fw.write("一生未立寸功,只会摇唇鼓舌,助曹为虐\n");fw.write("一条断脊之犬,还敢在我军面前狺狺狂吠!\n");fw.write("我从未见过有如此厚颜无耻之人!\n");fw.flush();//关闭资源fw.close();

FileReader读
1.单个字符读

        //创建字符输入流FileReader fr = new FileReader("/Users/lanou/Desktop/Test/wl.txt");//单个读int num = 0;while ((num = fr.read()) != -1) {System.out.println((char)num);}fr.close();

2.字符数组读

        FileReader fr = new FileReader("/Users/lanou/Desktop/Test/wl.txt");char[] c = new char[1024];int len = 0;while ((len = fr.read(c)) != -1) {System.out.println(new String(c, 0, len));}fr.close();

字符流中的复制文件(边读边写)

        FileReader fr = null;FileWriter fw = null;try {fw = new FileWriter("/Users/lanou/Desktop/hahaha/newdnf.txt");fr = new FileReader("/Users/lanou/Desktop/Test/dnf.txt");char[] c = new char[1024];int len = 0;while ((len = fr.read(c)) != -1) {fw.write(c, 0, len);fw.flush();}} catch (FileNotFoundException e) {throw new RuntimeException("文件找不到");} catch (IOException e) {throw new RuntimeException("读写失败");} finally {if (fr != null) {try {fr.close();} catch (IOException e) {throw new RuntimeException("关闭失败");} finally {// 关闭第二个流 确保两个流都能关闭if (fw != null) {try {fw.close();} catch (IOException e) {throw new RuntimeException("关闭失败");}}}}}

Stoker的Java学习之字节流与字符流相关推荐

  1. Java学习之字节流和字符流的转化

    Java学习之字节流和字符流的转化 1.字节流转换成字符流 输入字节流转为字符流需要用到InputStreamReader的构造方法: InputStreamReader(InputStream in ...

  2. 【Java基础】吃透Java IO:字节流、字符流、缓冲流

    文章目录 [Java基础-3]吃透Java IO:字节流.字符流.缓冲流 一.初识java IO 1.1 IO流分类 1.1.1 输入流与输出流 1.1.2 字节流与字符流 1.1.3 节点流和处理流 ...

  3. Java中的字节流和字符流如何理解——精简

    目录 引言 字节流和字符流 字节流 字节输入流 字节输出流 字符流 字符输入流 字符输出流 引言 在完完全全的完成本学期的学习任务之后,终于可以有时间继续更新Java相关的文章了.那么今天我们要学习的 ...

  4. java byte char io流_吃透Java IO:字节流、字符流、缓冲流

    前言有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身, ...

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

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

  6. java day20【字节流、字符流】

    第一章 IO概述 1.1 什么是IO 生活中,你肯定经历过这样的场景.当你编辑一个文本文件,忘记了ctrl+s ,可能文件就白白编辑了.当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里.那 ...

  7. 吃透Java IO:字节流、字符流、缓冲流

    IO流是Java中的一个重要构成部分,也是我们经常打交道的. 下面几个问题(问题还会继续补充),如果你能对答如流,那么恭喜你,IO知识掌握得很好,可以立即关闭文章.反之,你可以在后面得文章中寻找答案. ...

  8. java字符流字节流场景_【120期】Java IO:字节流、字符流、缓冲流

    IO流是Java中的一个重要构成部分,也是我们经常打交道的.这篇关于Java IO的博文干货满满,堪称全网前三(请轻喷!) 下面几个问题(问题还会继续补充),如果你能对答如流,那么恭喜你,IO知识掌握 ...

  9. fileoutputstream 字节乱码_吃透Java IO:字节流、字符流、缓冲流

    前言 有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身 ...

最新文章

  1. JavaScript如何获得input元素value值
  2. mysql性能优化之sql语句优化最强合集
  3. 动画库 Lottie 的使用
  4. Java虚拟机结构分析
  5. 关于玻璃体捐献的想法
  6. [国嵌攻略][084][信号同步编程]
  7. 消息称苹果正开发基于自研ARM芯片的游戏主机
  8. 如何CLASSPATH下的resource.properties文件进行读写操作?
  9. 手机java版怎么换皮肤_手机QQ皮肤更换方法(安卓版)
  10. PID算法原理及基本实现
  11. C语言学习-翁凯(第十章笔记)
  12. linux让别人电脑蓝屏,教你如何让别人电脑瞬间蓝屏!只需要两个键,装逼神器,值得拥有...
  13. Java深圳工作面试经历(真实经历)!!!
  14. sql server分组排序
  15. win10计算机更新后网络卡,win10更新后很卡怎么办
  16. [论文笔记]ACL-2021-Improving Named Entity Recognition by External Context Retrieving and Cooperative
  17. chrome下载提示网络错误
  18. 什么是聚合页面?网站优化做聚合页面的好处
  19. 关于字符串赋值的方法以及注意事项
  20. mongodb数据同步到elasticsearch的中间件,支持全量,增量,实时同步等多种同步情景。(syncs MongoDB to Elasticsearch in realtime) (Mong

热门文章

  1. HCIA之ARP协议
  2. android 中高级常见面试题_未完待续
  3. percona mysql 主从_mysql之percona-toolkit安装与主从复制
  4. 什么是代理IP,代理IP有什么用
  5. Shell编程之循环语句(详细讲解以及脚本案例)
  6. htc+android+4.4.4,HTC可获Android 6.0更新机型:这次给力了!
  7. Jmeter分布式执行时遇到的坑空指针异常
  8. 把自己的网页设为主页
  9. java frf_Java中的方法RSACryptoServiceProvider signHash的等价物
  10. 解析Caffe框架的prototxt模型文件