10.6-全栈Java笔记:常见流详解(四)
上节我们讲到「Java中常用流:数据流和对象流」,本节我们学习文件字符流和文件缓冲流~
文件字符流
前面介绍的文件字节流可以处理所有的文件,但是字节流不能很好的处理Unicode字符,经常会出现“乱码”现象。所以,我们处理文本文件,一般可以使用文件字符流,它以字符为单位进行操作。
【示例1】使用FileReader与FileWriter实现文本文件的copy
package com.bjsxt.io; import java.io.*; /** * 测试文件字符流 * @author 尚学 * */ public class Demo07 { public static void main(String[] args) { //写法和使用stream基本一样。只不过,读取时是读取的字符。 FileReader fr = null; FileWriter fw = null; int c = 0; try { fr = new FileReader("d:/a.txt"); fw = new FileWriter("d:/d.txt"); while((c=fr.read())!=-1){ fw.write(c); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ try { if(fw!=null){ fw.close(); } } catch (IOException e) { e.printStackTrace(); } try { if(fr!=null){ fr.close(); } } catch (IOException e) { e.printStackTrace(); } } } } |
字符缓冲流
BufferReader/BufferWriter增加了缓存机制,大大提高了读写文本的效率,同时,提供了方便的按行读的方法:readLine(); 处理文本时,我们一般可以使用字符缓冲流。
【示例2】使用BufferReader与BufferWriter实现文本文件的复制
import java.io.*; public class Demo08 { public static void main(String[] args) { // 注:处理文本文件时,实际开发中可以用如下写法,简单高效!! FileReader fr = null; FileWriter fw = null; BufferedReader br = null; BufferedWriter bw = null; String tempString = ""; try { fr = new FileReader("d:/a.txt"); fw = new FileWriter("d:/d.txt"); br = new BufferedReader(fr); bw = new BufferedWriter(fw); while ((tempString = br.readLine()) != null) { bw.write(tempString); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if(bw!=null){ bw.close(); } } catch (IOException e1) { e1.printStackTrace(); } try { if(br!=null){ br.close(); } } catch (IOException e1) { e1.printStackTrace(); } try { if(fw!=null){ fw.close(); } } catch (IOException e) { e.printStackTrace(); } try { if(fr!=null){ fr.close(); } } catch (IOException e) { e.printStackTrace(); } } } } |
到本章节为止,我们已经学习了大部分的常见流,下节我们学习常见流的最后一篇~~
「全栈Java笔记」是一部能帮大家从零到一成长为全栈Java工程师系列笔记。笔者江湖人称 Mr. G,10年Java研发经验,曾在神州数码、航天院某所研发中心从事软件设计及研发工作,从小白逐渐做到工程师、高级工程师、架构师。精通Java平台软件开发,精通JAVAEE,熟悉各种流行开发框架。
笔记包含从浅入深的六大部分:
A-Java入门阶段
B-数据库从入门到精通
C-手刃移动前端和Web前端
D-J2EE从了解到实战
E-Java高级框架精解
F-Linux和Hadoop
转载于:https://blog.51cto.com/javanew/1944626
10.6-全栈Java笔记:常见流详解(四)相关推荐
- 10.4-全栈Java笔记:常用流详解(二)
上节我们讲到「Java中常用流:文件字节流和字节数组流」,本节我们继续走起~ 缓冲流 BufferedInputStream和BufferedOutputStream这两个流是处理流,通过内部缓存数 ...
- Python全栈开发-数据分析-03 Pandas详解 (中)
Pandas详解 (中) 一. 处理缺失值 1.1 drop函数:删除行,删除列 1.删除某列或某行数据可以用到pandas提供的方法drop 2.drop方法的用法: drop(labels, ax ...
- Python全栈开发-数据分析-02 Pandas详解 (上)
Pandas详解 (上) 一. 安装pandas 1.按Win+R,输入CMD确定, 输入 pip install pandas 回车 还要安装xlrd,否则你打不开Excel文件 pip insta ...
- Python全栈开发-数据分析-03 Pandas详解 (下)
Pandas详解 (下) 一. Excel文件的拆分与合并 1.1 一个文件夹下多个工作簿的合并[单独Sheet] 思路: 1,把文件夹下面所有的文件都遍历出来 2.循环读取每个文件 (1)第一次读取 ...
- java全栈系列之JavaSE--递归详解022
递归 通俗来讲递归就是自己调用自己,例如:方法A调用方法A,递归可以大大减少程序的代码量,递归调用次数过多会严重影响机器的性能 如下,我定义了一个方法名字叫demo,在demo方法里面自己调用自己 p ...
- java全栈系列之JavaSE--Arrays类详解027
数组工具类java.util.Arrays Arrays类的常用功能: 给数组赋值,通过fill方法 对数组进行排序,通过sort方法 比较数组,通过equals方法比较两数组的元素值是否相等 查找数 ...
- python全栈示例_Python全栈之路--Django ORM详解
ORM:(在django中,根据代码中的类自动生成数据库的表也叫--code first) ORM:Object Relational Mapping(关系对象映射) 我们写的类表示数据库中的表 我们 ...
- 10.8-全栈Java笔记:序列化/反序列化的步骤和实例
本节我们详细讲解10.3节中提到的序列化和反序列化操作. 序列化和反序列化是什么 当两个进程远程通信时,彼此可以发送各种类型的数据. 无论是何种类型的数据,都会以二进制序列的形式在网络上传送.比如,我 ...
- 11.3-全栈Java笔记:线程的生命周期
一个线程对象在它的生命周期内,需要经历5个状态. 新生状态(New) 用new关键字建立一个线程对象后,该线程对象就处于新生状态.处于新生状态的线程有自己的内存空间,通过调用start方法进入就绪状态 ...
最新文章
- SIGPIPE导致cronttab和shell脚本等工作异常
- 科学家研发机器人混入南极企鹅群 获“友好”对待
- boost::mpi::cartesian_communicator相关用法的测试程序
- 避免修改构造函数输入参数引起的 breaking change
- php.ini详细介绍与设置,配置
- pq 中m函数判断嵌套_你还在用IF函数进行逻辑判断吗?试试PQ,简单又实用
- 【路径规划】基于matlab GUI人工势场算法机器人避障路径规划(手动设障)【含Matlab源码 617期】
- Docker部署AI算法教程
- 软考-信息系统项目管理师-项目进度管理
- 2021-08-05 得帆技术培训Linux作业
- CSS压缩之:正则五步替换法
- 华为云云耀云服务器 中小企业的福音
- chrome-调试按钮详解
- 【飞书集成自建应用教程】
- clipboard 多次回调
- 【学习笔记】群论基础
- 机器学习(二)--sklearn之逻辑斯蒂回归和朴素贝叶斯
- 卓普zp900s手机root和data大小调整经验
- 使用esp32cam与stm32c8t6核心板开发的99A静改动
- Charles的功能介绍与使用教程,一学就会,不信就来试试?
热门文章
- ldap基本dn_LDAP 中 DN CN DC OU
- html中basefont标签,HTML的basefont标签
- java工程怎么构造成moven_将普通java工程结构改为由maven管理的工程结构域
- 华gt2升级鸿蒙,华为手表GT2 Pro已开始内部测试,升级鸿蒙操作系统
- 微信小程序弹出框竖向滚动_微信小程序 解决自定义弹出层滑动时下层页面滚动问题...
- Springboot定时任务原理及如何动态创建定时任务
- Uvaoj 11248 Frequency Hopping(Dinic求最小割)
- redhat enterprise linux 哪个版本好,Red Hat Enterprise Linux 版本显示中(Santiago)是啥意思?...
- Java一次编译,到处运行是如何实现的
- 服务器修改地址,服务器修改管理地址