Stoker的Java学习之字节流与字符流
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学习之字节流与字符流相关推荐
- Java学习之字节流和字符流的转化
Java学习之字节流和字符流的转化 1.字节流转换成字符流 输入字节流转为字符流需要用到InputStreamReader的构造方法: InputStreamReader(InputStream in ...
- 【Java基础】吃透Java IO:字节流、字符流、缓冲流
文章目录 [Java基础-3]吃透Java IO:字节流.字符流.缓冲流 一.初识java IO 1.1 IO流分类 1.1.1 输入流与输出流 1.1.2 字节流与字符流 1.1.3 节点流和处理流 ...
- Java中的字节流和字符流如何理解——精简
目录 引言 字节流和字符流 字节流 字节输入流 字节输出流 字符流 字符输入流 字符输出流 引言 在完完全全的完成本学期的学习任务之后,终于可以有时间继续更新Java相关的文章了.那么今天我们要学习的 ...
- java byte char io流_吃透Java IO:字节流、字符流、缓冲流
前言有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身, ...
- java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝
接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...
- java day20【字节流、字符流】
第一章 IO概述 1.1 什么是IO 生活中,你肯定经历过这样的场景.当你编辑一个文本文件,忘记了ctrl+s ,可能文件就白白编辑了.当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里.那 ...
- 吃透Java IO:字节流、字符流、缓冲流
IO流是Java中的一个重要构成部分,也是我们经常打交道的. 下面几个问题(问题还会继续补充),如果你能对答如流,那么恭喜你,IO知识掌握得很好,可以立即关闭文章.反之,你可以在后面得文章中寻找答案. ...
- java字符流字节流场景_【120期】Java IO:字节流、字符流、缓冲流
IO流是Java中的一个重要构成部分,也是我们经常打交道的.这篇关于Java IO的博文干货满满,堪称全网前三(请轻喷!) 下面几个问题(问题还会继续补充),如果你能对答如流,那么恭喜你,IO知识掌握 ...
- fileoutputstream 字节乱码_吃透Java IO:字节流、字符流、缓冲流
前言 有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身 ...
最新文章
- JavaScript如何获得input元素value值
- mysql性能优化之sql语句优化最强合集
- 动画库 Lottie 的使用
- Java虚拟机结构分析
- 关于玻璃体捐献的想法
- [国嵌攻略][084][信号同步编程]
- 消息称苹果正开发基于自研ARM芯片的游戏主机
- 如何CLASSPATH下的resource.properties文件进行读写操作?
- 手机java版怎么换皮肤_手机QQ皮肤更换方法(安卓版)
- PID算法原理及基本实现
- C语言学习-翁凯(第十章笔记)
- linux让别人电脑蓝屏,教你如何让别人电脑瞬间蓝屏!只需要两个键,装逼神器,值得拥有...
- Java深圳工作面试经历(真实经历)!!!
- sql server分组排序
- win10计算机更新后网络卡,win10更新后很卡怎么办
- [论文笔记]ACL-2021-Improving Named Entity Recognition by External Context Retrieving and Cooperative
- chrome下载提示网络错误
- 什么是聚合页面?网站优化做聚合页面的好处
- 关于字符串赋值的方法以及注意事项
- mongodb数据同步到elasticsearch的中间件,支持全量,增量,实时同步等多种同步情景。(syncs MongoDB to Elasticsearch in realtime) (Mong
热门文章
- HCIA之ARP协议
- android 中高级常见面试题_未完待续
- percona mysql 主从_mysql之percona-toolkit安装与主从复制
- 什么是代理IP,代理IP有什么用
- Shell编程之循环语句(详细讲解以及脚本案例)
- htc+android+4.4.4,HTC可获Android 6.0更新机型:这次给力了!
- Jmeter分布式执行时遇到的坑空指针异常
- 把自己的网页设为主页
- java frf_Java中的方法RSACryptoServiceProvider signHash的等价物
- 解析Caffe框架的prototxt模型文件