重学java 64.IO流 字符流

Action speak louder than words

                                        —— 24.6.5

字符输入流

一、字节流读取中文的问题

1.注意:

        字节流是万能流,这个万能更侧重于文件复制,但是尽量不要边读边看

2.原因:

        UTF-8:一个汉字占三个字节

        GBK:一个汉字占两个字节

        如果按照字节读取,每次读取的字节没有构成一个汉字的字节数,就直接输出,汉字是显示不了的

3.解决:

        将文本文档中的内容,按照字符去操作

        注意:

                ① 按照字符去操作编码也要一致,如果不一致,会乱码

                ② 按照字节流去操作,即使编码一致,边读边看也有可能会乱码

二、FileReader的介绍以及使用

字符流专门操作文本文档的,但是复制操作不要用字符流,要用字节流

1.概述

        字符输入流 —> Reader —> 是一个抽象类

                子类:FileReader

2.作用

        将文本文档中的内容读取到内存中来

3.构造

        FileReader(File file)

        FileReader(String path)

4.方法

        int read() —> 一次读取一个字符,返回的是读取字符对应的int值

        int read(char[] cbuf) —> 一次读取一个字符数组,返回的是读取个数

        int read(char[] cbuf,int off,int len) —> 一次读取一个字符数组一部分,返回的是读取个数

                chuf:读取的数组

                off:读取开始的位置

                len:读取的长度

        void close() —> 关闭资源

import java.io.FileReader;
import java.io.IOException;public class Demo270FileMethod {public static void main(String[] args) throws IOException {method01();method02();// int read(char[] cbuf) —> 一次读取一个字符数组,返回的是读取个数}private static void method02() throws IOException {FileReader fr = new FileReader("AllWillBest_Java/1.txt");char[] buf = new char[3];int len;while ((len = fr.read(buf))!=-1){System.out.println(new String(buf,0,len));}}private static void method01() throws IOException {FileReader fr = new FileReader("AllWillBest_Java/1.txt");// int read() —> 一次读取一个字符,返回的是读取字符对应的intint len;while ((len = fr.read()) != -1) {System.out.print((char)len);}fr.close();}
}

三、FileWriter的介绍以及使用

1.概述:

        字符输出流 —> writer —> 抽象类
        子类:Filewriter

2.作用:

        将数据写到文件中

3.构造:

        Filewriter(File file)

        Filewriter(string fileName)

        FileWriter(string fileName,boolean append)->追加,续写

4.方法

        void write(int c) —> 一次写一个字符

        void write(char[] cbuf) —> 一次写一个字符数组

        void write(char[] cbuf, int off, int len) —> 一次写一个字符数组的一部分

        void write(string str) —> 直接写一个字符串

        void close() —> 关流

5.FileWriter的刷新功能和关闭功能

        void flush() —> 将缓冲区的文件送到文件内,后续流对象才能继续使用(只刷新

        void close() —> 先刷新后关闭,后续流对象不能使用了(刷新且关闭

import java.io.FileWriter;
import java.io.IOException;public class Demo271FileWriter {public static void main(String[] args) throws IOException {method01();}private static void method01() throws IOException {FileWriter fw = new FileWriter("AllWillBest_Java/1.txt");fw.write("我一直相信,");fw.write("苦难是花开的伏笔,");fw.write("流水不争先,争的是滔滔不绝");fw.flush();fw.close();}
}

四、IO流异常处理问题

1.格式

        try{

                }catch{

                 }

2.示例

import java.io.FileWriter;
import java.io.IOException;public class Demo272Exception {public static void main(String[] args) {FileWriter fw = null;try{fw = new FileWriter("AllWillBest_Java\\2.txt");fw.write("一切都会好的");}catch (Exception e){e.printStackTrace();}finally {// 如果fw不为null,证明new出来了,需要ckoseif(fw!=null){try {fw.close();}catch (IOException e) {throw new RuntimeException(e);}}}}
}

五、JDK7之后io异常处理方式

1.格式:

        try(IO对象){
                可能出现异常的代码

        }catch(异常类型 对象名){

                处理异常

        }

2.注意:

        以上格式处理IO异常,会自动关流

3.示例

import java.io.FileWriter;public class Demo273Exception2 {public static void main(String[] args) {try(FileWriter fw = new FileWriter("AllWillBest_Java\\3.txt");){fw.write("我一直相信");}catch (Exception e){e.printStackTrace();}}
}

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

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

相关文章

ufw防火墙基本操作

ufw防火墙基本操作 ufw防火墙的基本操作包括以下几个方面: 安装ufw: 在Ubuntu系统上,可以使用以下命令安装ufw:sudo apt-get update 和 sudo apt-get install ufw。 启动、停止和检查状态: 启动防火墙:su…

IO流-----各种流(对象流,内存流,打印流,随机访问流)

各种流 各种流:对象流:操作:对象输入输出流:写入数据:读取数据: 内存流:内存输出流:内存输入流: 打印流:字节打印流:字符打印流: 随机…

linux和 qnx 查看 网卡网络流量

netstat -i netstat -i和-s-CSDN博客

BOM 常见对话框用法

当涉及到 BOM(浏览器对象模型)中的对话框时,我们可以使用以下方法来与用户进行交互。 alert() 对话框: 这个对话框用于向用户显示一个简单的提示信息,并等待用户点击确定按钮后关闭对话框。 alert("Hello World!");conf…

前后端项目知识概述总结

一、什么是ECharts? 是一个开源的,纯JavaScript的图表库,它提供了一整套丰富的图表类型,包括折线图、柱状图、饼图、雷达图、散点图、地图、热力图、箱型图等等,用于各种数据的可视化需求 二、什么是JSP? 建立在Servl…

Windows 2000 Server:安全配置终极指南

"远古技术,仅供娱乐" 💭 前言:Windows 2000 服务器在当时的市场中占据了很大的比例,主要原因包括操作简单和易于管理,但也经常因为安全性问题受到谴责,Windows 2000 的安全性真的那么差吗&#x…

虹科免拆诊断案例 | 2013 款路虎神行者 2 车偶发性无法起动

故障现象 一辆2013款路虎神行者2车,搭载2.0 L Si4 Petrol发动机,累计行驶里程约为4.5万km。车主反映,车辆偶发性无法起动,故障出现时,尝试起动发动机,组合仪表上会出现“挡位不在驻车挡”“充电系统故障”…

python如何根据xy坐标在png图片上标记红点

要在Python中根据x、y坐标在PNG图片上标记红点,你可以使用PIL(Python Imaging Library,也称为Pillow)库。以下是一个简单的示例,展示了如何做到这一点: 首先,确保你已经安装了Pillow库。如果没…

【阿里云】在云服务器ECS 安装MySQL、本地远程连接或宝塔连接(手动部署)

目录 一、安装MySQL 二、配置MySQL 三、远程访问MySQL数据库 四、Navicat本地连接远程MySQL 五、宝塔连接MySQL 如果你是使用宝塔安装的MySQL请绕过,以下是通过命令行模式(手动部署)进行安装、配置及运行。 安装:MySQL8.0 …

【java前端课堂】01_final和private的区别

目录 简介: 下面是这两个关键字的简单总结: 示例: 使用 final 限制类不被继承: 简介: 在Java中,我们使用final来限制一个类不被其他类继承,这是为了确保类的实现不会被修改或破坏。而private…

【golang学习之旅】Go中的cron定时任务

系列文章 【golang学习之旅】报错:a declared but not used 【golang学习之旅】Go 的基本数据类型 【golang学习之旅】深入理解字符串string数据类型 【golang学习之旅】go mod tidy 【golang学习之旅】记录一次 panic case : reflect: reflect.Value.SetInt using…

【天气预报game】

要编写一个简单的天气预报游戏代码,我们可以使用Python语言。这个游戏可以模拟基本的天气预报功能,让玩家输入一个城市,然后返回该城市的天气情况。我们可以使用一个预定义的天气数据库,或者使用网络服务来获取实时天气数据。 下面…

Python编程学习第一篇——制作一个小游戏休闲一下

到上期结束,我们已经学习了Python语言的基本数据结构,除了数值型没有介绍,数值型用的非常广,但也是最容易理解的,将在未来的学习中带大家直接接触和学习掌握。后续我们会开始学习这门语言的一些基础语法和编程技巧&…

cs与msf权限传递

cs传递到msf 1,先启动cs ┌──(root㉿ring04h)-[~/cobalt_strike_4.7] └─# ./teamserver 192.168.196.144 123456 ​ ┌──(root㉿ring04h)-[~/cobalt_strike_4.7] └─# ./start.sh ​ 2,上传木马,上线主机 3,msf配置一个…

暑期社会实践来了,这份投稿攻略你收藏好!

一、文字投稿要求 (一)实践纪实类 1.内容充实,字数不低于1500字,标题10-30字,不允许用“精彩飞扬——大学实践队”形式,要求用一句话标题。导语新闻五要素齐全(即何人、何时、何地、何事、何因…

Qt——升级系列(Level Two):Hello Qt 程序实现、项目文件解析、Qt 编程注意事项

Hello Qt 程序实现 使用“按钮”实现 纯代码方式实现: // Widget构造函数的实现 Widget::Widget(QWidget *parent): QWidget(parent) // 使用父类构造函数初始化QWidget,传入父窗口指针, ui(new Ui::Widget) // 创建Ui::Widget类的实例,并…

人工智能时代,Martech未来的3种场景

多年来,人们一直在预测Martech Landscape的崩溃。成千上万个不同的Martech应用程序将被筛选出少数几个赢家。在过去的12年里,这些预测一直被证明是错误的,年复一年。 但也许,只是也许,人工智能时代将成为拐点&#xf…

dibbler-DHCPv6 的开源框架(C++ 实现)1

一、下载 IPv6 DHCPv6 协议的开源框架:dibbler 下载地址:https://github.com/tomaszmrugalski/dibbler.git 二、代码编写语言和文件结构 编写语言 文件 三、编译 编译 server 端: chmod x configure ./configure# 编译服务端(4核) mak…

AI推介-大语言模型LLMs论文速览(arXiv方向):2024.05.25-2024.05.31

文章目录~ 1.Direct Alignment of Language Models via Quality-Aware Self-Refinement2.Enhancing Noise Robustness of Retrieval-Augmented Language Models with Adaptive Adversarial Training3.Unveiling the Lexical Sensitivity of LLMs: Combinatorial Opt…

golang普通函数与闭包函数使用示例

1.普通函数实现 // 同类开多个参数默认写法 func add2(a int, b int) int {return a b }// 同类开多个参数简洁写法 func add3(a, b, c int) int {return a b c } 2.函数返回多个值实现 // 多个返回值写法 func add(a int, b int) (int, int) {return a * 5, b * 5 }// 多…