c++文件流读取一行_「软帝学院」Java挑战者专栏:IO流详解2

软帝学院笔记Day18

a8d2e151a38b38d1a974e89557bf5714.png

IO流(字符流FileReader)

  • 1.字符流是什么
    • 字符流是可以直接读写字符的IO流
    • 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符转为字节再写出.
  • 2.FileReader
    • FileReader类的read()方法可以按照字符大小读取
  • FileReader fr = new FileReader("aaa.txt"); //创建输入流对象,关联aaa.txt int ch; while((ch = fr.read()) != -1) { //将读到的字符赋值给ch System.out.println((char)ch); //将读到的字符强转后打印 } fr.close(); //关流

21.02_IO流(字符流FileWriter)

  • FileWriter类的write()方法可以自动把字符转为字节写出FileWriter fw = new FileWriter("aaa.txt"); fw.write("aaa"); fw.close();

IO流(字符流的拷贝)

FileReader fr = new FileReader("a.txt");FileWriter fw = new FileWriter("b.txt");int ch;while((ch = fr.read()) != -1) { fw.write(ch);}fr.close();fw.close();

IO流(什么情况下使用字符流)

  • 字符流也可以拷贝文本文件, 但不推荐使用. 因为读取时会把字节转为字符, 写出时还要把字符转回字节.
  • 程序需要读取一段文本, 或者需要写出一段文本的时候可以使用字符流
  • 读取的时候是按照字符的大小读取的,不会出现半个中文
  • 写出的时候可以直接将字符串写出,不用转换为字节数组

IO流(字符流是否可以拷贝非纯文本的文件)

  • 不可以拷贝非纯文本的文件
  • 因为在读的时候会将字节转换为字符,在转换过程中,可能找不到对应的字符,就会用?代替,写出的时候会将字符转换成字节写出去
  • 如果是?,直接写出,这样写出之后的文件就乱了,看不了了

IO流(自定义字符数组的拷贝)

  • FileReader fr = new FileReader("aaa.txt"); //创建字符输入流,关联aaa.txt FileWriter fw = new FileWriter("bbb.txt"); //创建字符输出流,关联bbb.txt int len; char[] arr = new char[1024*8]; //创建字符数组 while((len = fr.read(arr)) != -1) { //将数据读到字符数组中 fw.write(arr, 0, len); //从字符数组将数据写到文件上 } fr.close(); //关流释放资源 fw.close();

IO流(带缓冲的字符流)

  • BufferedReader的read()方法读取字符时会一次读取若干字符到缓冲区, 然后逐个返回给程序, 降低读取文件的次数, 提高效率
  • BufferedWriter的write()方法写出字符时会先写到缓冲区, 缓冲区写满时才会写到文件, 降低写文件的次数, 提高效率
  • BufferedReader br = new BufferedReader(new FileReader("aaa.txt")); //创建字符输入流对象,关联aaa.txt BufferedWriter bw = new BufferedWriter(new FileWriter("bbb.txt")); //创建字符输出流对象,关联bbb.txt int ch; while((ch = br.read()) != -1) { //read一次,会先将缓冲区读满,从缓冲去中一个一个的返给临时变量ch bw.write(ch); //write一次,是将数据装到字符数组,装满后再一起写出去 } br.close(); //关流 bw.close();

IO流(readLine()和newLine()方法)

  • BufferedReader的readLine()方法可以读取一行字符(不包含换行符号)
  • BufferedWriter的newLine()可以输出一个跨平台的换行符号""
  • BufferedReader br = new BufferedReader(new FileReader("aaa.txt")); BufferedWriter bw = new BufferedWriter(new FileWriter("bbb.txt")); String line; while((line = br.readLine()) != null) { bw.write(line); //bw.write(""); //只支持windows系统 bw.newLine(); //跨平台的 } br.close(); bw.close();

IO流(将文本反转)

  • 将一个文本文档上的文本反转,第一行和倒数第一行交换,第二行和倒数第二行交换
ef203964856fe93f0fb0b281a2fbe483.png

IO流(LineNumberReader)

  • LineNumberReader是BufferedReader的子类, 具有相同的功能, 并且可以统计行号
    • 调用getLineNumber()方法可以获取当前行号
    • 调用setLineNumber()方法可以设置当前行号
  • LineNumberReader lnr = new LineNumberReader(new FileReader("aaa.txt")); String line; lnr.setLineNumber(100); //设置行号 while((line = lnr.readLine()) != null) { System.out.println(lnr.getLineNumber() + ":" + line);//获取行号 } lnr.close();

IO流(装饰设计模式)

  • interface Coder { public void code(); } class Student implements Coder { @Override public void code() { System.out.println("javase"); System.out.println("javaweb"); } } class HeiMaStudent implements Coder { private Student s; //获取到被包装的类的引用 public ItcastStudent(Student s) { //通过构造函数创建对象的时候,传入被包装的对象 this.s = s; } @Override public void code() { //对其原有功能进行升级 s.code(); System.out.println("数据库"); System.out.println("ssh"); System.out.println("安卓"); System.out.println("....."); } }

IO流(使用指定的码表读写字符)

  • FileReader是使用默认码表读取文件, 如果需要使用指定码表读取, 那么可以使用InputStreamReader(字节流,编码表)
  • FileWriter是使用默认码表写出文件, 如果需要使用指定码表写出, 那么可以使用OutputStreamWriter(字节流,编码表)
  • BufferedReader br = //高效的用指定的编码表读 new BufferedReader(new InputStreamReader(new FileInputStream("UTF-8.txt"), "UTF-8")); BufferedWriter bw = //高效的用指定的编码表写 new BufferedWriter(new OutputStreamWriter(new FileOutputStream("GBK.txt"), "GBK")); int ch; while((ch = br.read()) != -1) { bw.write(ch); } br.close(); bw.close();

IO流(转换流图解)

  • 画图分析转换流

IO流(获取文本上字符出现的次数)

  • 获取一个文本上每个字符出现的次数,将结果写在times.txt上

IO流(试用版软件)

  • 当我们下载一个试用版软件,没有购买正版的时候,每执行一次就会提醒我们还有多少次使用机会用学过的IO流知识,模拟试用版软件,试用10次机会,执行一次就提示一次您还有几次机会,如果次数到了提示请购买正版

File类(递归)

  • 5的阶乘

File类(练习)

  • 需求:从键盘输入接收一个文件夹路径,打印出该文件夹下所有的.java文件名

IO流(总结)

  • 1.会用BufferedReader读取GBK码表和UTF-8码表的字符
  • 2.会用BufferedWriter写出字符到GBK码表和UTF-8码表的文件中
  • 3.会使用BufferedReader从键盘读取一行
c085baddd85bc9cc51870d4a819f4104.png

最后,开发这么多年我也总结了一套学习Java的资料,如果你在技术上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让跟多的人看到哦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523060.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“AI捡垃圾”上热搜了!46城垃圾分类将投200亿,你怎么看?

自动上海开始推行垃圾分类,上海人民就成为了广大网友的快乐源泉。据说有一位“机智”的程序员由于加班太忙,把垃圾寄快递到昆山去扔。快递员表示:天才操作!并拒绝了他,然后花半小时教他垃圾分类。在哈哈哈的同时&#…

解决“Failure to find com.oracle:ojdbc6:jar”,手动安装ojdbc的jar包到maven私仓

在使用mvn进行编译的时候,遇到如下错误: Could not resolve dependencies for project com.bairong.platform:auth:jar:3.0: Failure to find com.oracle:ojdbc6:jar:11.2.0.1.0 in http://maven.aliyun.com /nexus/content/groups/public/ was cached …

2017双11技术揭秘—阿里数据库进入全网秒级实时监控时代

摘要: 2017双11再次创下了32.5万笔/秒交易创建的纪录,在这个数字后面,更是每秒多达几千万次的数据库写入,如何大规模进行自动化操作、保证数据库的稳定性、快速发现问题是一个巨大的难题, 这也是数据库管控平台要完成的…

混合云发展之路:前景广阔,巨头混战

戳蓝字“CSDN云计算”关注我们哦!知名云管理服务商RightScale(目前已经被Flexera公司收购) 每年都会对企业使用云的情况进行调查,以此分析全球企业云的采用情况。RightScale 发布的2019年全球云计算市场调查显示,在众多云平台中,混…

2017双11技术揭秘—阿里数据库计算存储分离与离在线混布

摘要: 随着阿里集团电商、物流、大文娱等业务的蓬勃发展,数据库实例以及数据存储规模不断增长,在传统基于单机的运维以及管理模式下,遇到诸多如成本,调度效率等问题,因此,2017年首次对数据库实现…

unoconv 在线预览 doc,doxc,xls,xlsx,ppt,pptx 文件功能环境搭建

接上一篇: SpringBoot 在线预览 doc,doxc,xls,xlsx,ppt,pptx 文件 https://blog.csdn.net/weixin_40816738/article/details/102847228 文章目录服务器环境为linux1.切换到root用户:2.执行unoco…

2017双11技术揭秘—阿里巴巴数据库技术架构演进

摘要: 每年电商双11大促对阿里技术人都是一次大考,对阿里数据库团队更是如此。经过9年的发展,双11单日交易额从2009年的0.5亿一路攀升到2017年的1682亿,秒级交易创建峰值达到了32.5万笔/秒。支撑这一切业务指标的背后,…

SpringBoot 使用unoconv 在线预览 doc,doxc,xls,xlsx,ppt,pptx 文件

接上一篇:linux环境源码安装unoconv Linux环境_源码安装Unoconv实现文件在线预览doc,doxc,xls,xlsx,ppt,pptx 文件 https://gblfy.blog.csdn.net/article/details/103540694 接上一篇:linux环境…

解码2017双11:全球狂欢新记录背后的阿里云存储

摘要: 2017天猫双11再次刷新纪录,这背后是大数据的支撑和阿里云计算的能力的体现。手淘、天猫APP主站的所有图片和视频都存储在阿里云对象存储OSS之上,全球数以亿计的消费者,对这些商品的访问的流量和并发次数,比成交笔…

开发者,什么是你真正关心的问题?| AI ProCon 2019

2018 年,上千名开发者与上百名技术专家齐聚一堂,在 CSDN 2018 AI开发者大会上以“AI技术与应用”为核心,深度聚焦人工智能的技术创新与行业应用,真正做到了“只讲技术,拒绝空谈”。今年,在产业智能化的浪潮…

最大值_Leetcode2 | 滑动窗口最大值(Q239)

:)Sliding Window MaximumQ 239今天也是好心情Problem Description DifficultyYou are given an array of integers nums, there is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbers in the w…

PCDN实现flash无延时直播的技术原理与优点

摘要: PCDN是以P2P技术为基础,通过挖掘利用边缘网络海量碎片化闲置资源而构建的内容分发网络,它具有低成本、高品质的特点,十分适用于视频直播这一业务场景。针对直播中延时的情况,PCDN也进行了一系列优化,…

CDN新品发布:阿里云SCDN安全加速开放公测

摘要: SCDN(SecureCDN)安全加速产品是CDN推出的一款集合安全能力的内容加速服务,用户就近取得所需内容解决因分布、带宽、服务器性能带来的访问延迟问题,提升网站访问速度。同时防护DDoS,CC,Web应用攻击,恶…

美企调查华为设备安全性,华为发长文质疑;摩根大通预计苹果2020年将推5G iPhone;谷歌拟联手Dish成立美国第四大运营商...

戳蓝字“CSDN云计算”关注我们哦!嗨,大家好,重磅君带来的【云重磅】特别栏目,如期而至,每周五第一时间为大家带来重磅新闻。把握技术风向标,了解行业应用与实践,就交给我重磅君吧!重…

实现mvcc_MySQL 的多版本并发控制(MVCC) 是干啥的?

点击蓝色“架构文摘”关注我哟加个“星标”,每天上午 09:25,干货推送!来源:https://segmentfault.com/a/1190000037557620作者:白菜1031一、什么是多版本并发控制多版本并发控制 技术的英文全称是 Multiversion Concur…

网站访问速度提升200%以上,阿里云虚拟主机支持PHP最新版本

摘要: 日前,阿里云虚拟主机推出了新功能,支持PHP的最新版本 7.0和7.1,并支持用户在多个不同PHP版本之间切换。 PHP 作为最好的Web编程语言,最新版本已经更新到了7.0和7.1。阿里云作为国内虚拟主机的领头羊,…

2019年6月 阿里技术面试题集锦(28道含答案)

戳蓝字“CSDN云计算”关注我们哦!想要入职大厂可谓是千军万马过独木桥。要通过层层考验,刷题肯定是必不可少的。为帮助开发者们提升面试技能、有机会入职阿里,云栖社区特别制作了这个专辑——阿里巴巴资深技术专家们结合多年的工作、面试经验…

一键清理网站木马文件,从此网站拥有专属保镖 ——阿里云虚拟主机推出木马查杀功能...

摘要: 近日,阿里云推出了云虚拟主机网站木马查杀的新功能,十分适合对网站安全不了解、不熟悉的用户,或网站出现挂马情况不清楚如何处理的用户。 阿里云表示,此次网站木马查杀功能是阿里云安骑士专为虚拟主机推出的安全…

每天自动备份网站数据,发现问题一键恢复 ——阿里云虚拟主机推出网站数据自动备份功能...

摘要: 近日,阿里云宣布推出虚拟主机网站自动备份功能,可自动备份用户的网站和数据库数据至单独的备份区域,用户可随时恢复前三天的网站和数据库的数据。一旦出现意外或者数据丢失情况,可将损失降低到最低。 数据是用户…

如何快速下载CentOS7镜像

在centOS官网下载很慢,因此记录哪里下载比较快,其实就是 开源镜像网站网址阿里巴巴开源镜像站https://opsx.alibaba.com/mirror网易163开源镜像网站http://mirrors.163.com/ 下载entOS7步骤: 以阿里巴巴开源镜像网站作演示: 1.进…