字节流

作用:字节流可以将文字图片音频等等文件转成字节进行数据传输
分为:
OutputStream: 输出流,写文件
InputStream: 输入流,读文件

输出流的使用实例:

//  创建一个字节输出流,写文件,设置文件路径,如果没有,系统会自动创建FileOutputStream fos = new FileOutputStream("/Users/lanou/Desktop/dd.txt");//  写入方法write//  该方法是按ASCII码写入的fos.write(65);//  利用字节数组写入,同样是按ASCII码写入byte[] b = {66,67,68,69};fos.write(b);//  将"heihei" 转成字节数组写fos.write("heihei".getBytes());//  按偏移量写入数组的字符,b代表数组名,1代表数组角标,2代表长度fos.write(b, 1, 2);//  关闭资源 fos.close();

写入文件的是:A B C D E h e i h e i e i

注意:写完要关闭资源,一般会判断一下,创建流时有可能发生异常,利用finally特性补充一下判断

finally {if (fos != null) {          try {fos.close();} catch (IOException e) {throw new RuntimeException("关闭失败");}}}

输入流用来读取文件,有三种方法

  • 单个读取
        //  设置读取路径FileInputStream fis = new FileInputStream("/Users/lanou/Desktop/dd.txt");//  fis.read读取int num = fis.read();//  转为字符输出,不然输出的ASCII的对应值System.out.println((char)num);//  继续读取num = fis.read();System.out.println((char)num);//  关闭资源fis.close();

注意:当文件读取完毕时,返回值为-1

  • 循环读取
        FileInputStream fis = new FileInputStream("/Users/lanou/Desktop/dd.txt");int num = 0;//  fis.read()为-1时,文件读取完毕while ((num = fis.read()) != -1) {System.out.println((char)num);}fis.close();
  • 利用字节数组读取
FileInputStream fis = new FileInputStream("/Users/lanou/Desktop/dd.txt");//  创建数组,数组长度一般为1024的倍数byte[] b = new byte[1024];//  接收有效长度int len = 0;//  fis.read(b)返回值是有效长度     while ((len = fis.read(b)) != -1) {//  使用字符串的构造方法打印System.out.println(new String(b, 0, len));}fis.close();    

字符流

分为:
FileWriter: 写入文件
FileReader: 读取文件

输出流使用方法

        //  创建字符输出流FileWriter fw = new FileWriter("/Users/lanou/Desktop/hh.txt");//  写入文件fw.write(65);//  刷新(会将内容写入到文件中,如果不刷新,将不会写入)fw.flush();     //  字符数组写入char[] c ={'7','8'};fw.write(c);fw.flush();//  字符串直接写入//  换行 \n (mac系统)fw.write("天下三分明月夜\n");fw.write("二分无赖是扬州\n");fw.flush();     //  关闭资源//  关闭前,系统自动刷新fw.close();

写入文件的是:
A78
天下三分明月夜
二分无赖是扬州

输入流读取文件使用,同样三种方法(与字节流基本相同)

  • 单个读取
        //  设置读取路径FileReader fr = new FileReader("/Users/lanou/Desktop/dd.txt");int num = fr.read();System.out.println((char)num);//  继续读取num = fr.read();//  强转为字符输出System.out.println((char)num);//  关闭资源fr.close();
  • 循环读取
//  设置读取路径FileReader fr = new FileReader("/Users/lanou/Desktop/dd.txt");int num = 0;while ((num = fr.read()) != -1) {//  强转为字符输出System.out.print((char)num);}fr.close(); 
  • 利用字符数组读取
        FileReader fr = new FileReader("/Users/lanou/Desktop/dd.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();

字节流和字符流的用法相关推荐

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

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

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

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

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

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

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

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

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

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

  6. 字节流和字符流区别(附例子)

    字节流和字符流的用法几乎完成全一样,区别在于字节流和字符流所操作的数据单元不同,字节流操作的单元是数据单元是8位的字节,字符流操作的是数据单元为16位的字符. 区别 字节流一般用来处理图像.视频.音频 ...

  7. 复习Java字节流_字符流使用及案例

    字节流_字符流 主要内容 IO流 字节流 字符流 异常处理 Properties 第一章 IO概述 1.1 什么是IO 生活中,你肯定经历过这样的场景.当你编辑一个文本文件,忘记了ctrl+s ,可能 ...

  8. JavaSE——IO(上)(File、字节流、字符流、转换流、打印流、缓存流)

    第3节 IO(上) 一.File类与文件基本操作 在程序中经常需要用到文件的操作,Java有专门的类来进行文件的操作--File类. 1.1 File类概述 它是对文件和目录路径名的抽象表示. 即它本 ...

  9. IO流——字节流、字符流

    在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 流的分类 ①   流按其流向分为"输入流 ...

最新文章

  1. Flask显示图片并设置图片的缓存时间
  2. ps修改dds贴图_「干货」喜爱3D游戏动漫建模的你,必备的次世代游戏贴图技巧...
  3. webservice服务器端获取request对象的三种方式
  4. Python风格规范
  5. Qt Creator IDE概述
  6. spring--(25)声明式事务
  7. MM看过来!教你如何打扮变成时尚达人 - 生活至上,美容至尚!
  8. Bootstrap分页传值问题
  9. DropBox:机器学习每年可以为我们节省170万的文档预览费用
  10. java 局部内部类
  11. 一体化伺服电机与施耐德PLC TM241CEC24T在Canopen协议下的应用
  12. 计算机科学导论实验,《计算机科学导论》实验.doc
  13. JS 截取视频某一帧图片 实现视频截图
  14. 项目进度管理__计划评审技术之标准正态分布表
  15. 翻译:《Pro CSS and HTML Design Patterns》简介、总览和目录
  16. android屏幕 录制检测,Android 录制屏幕的实现方法
  17. Vultr 怎么修改 Root 账户密码
  18. win98模拟器_Windows98模拟器,手机也能这样玩!
  19. 6步教你封杀恶意登录服务器的ip
  20. 易语言注册码生成以及验证源码_短信验证码的登录流程

热门文章

  1. 分享:Vue.js新手入门指南-0518-v1.0张雅慧(续)
  2. 魔塔小游戏Java版项目完整版
  3. Surface Pro5 如何安装Win10系统
  4. android实现短信自动转发
  5. WPF开发学生信息管理系统【WPF+Prism+MAH+WebApi】(一)
  6. 自然语言处理(NLP):24基于文本语义的智能问答系统
  7. 物资借用/归还登记表模板
  8. JDK和JRE有什么区别
  9. 知道的越多,不知道的越多
  10. 树莓派作主板的四轮驱动小车,通过VNC控制,有语音播放功能,Python编程。