java字符的输入流_Java:字节流和字符流(输入流和输出流)

InputStream是抽象基类,所以它不可以创建对象,但它可以用来“接口化编程”,因为大部分子类的函数基类都有定义,所以利用基类来调用函数。

FileInputStream是用来读文件数据的流,所以它需要一个文件对象用来实例化,这个文件可以是一个File对象,也可以是文件名路径字符串.【这里文件不存在会抛错】

c5c360dbac2b05144100c3c9115cecb2.png

BufferedInputStream是一种封装别的流以提高效率的流,所以它的初始化需要一个的InputStream流对象。

63b51b6798d08822920eadb02c25fa8b.png

字节输出流:

常用的字节输出流主要有:

OutputStream

FileOutputStream

BufferedOutputStream 【BufferedOutputStream不是OutputStream的直接实现子类,是FilterOutputStream的子类】

他们的区别与用途:

OutputStream是字节输出流的基类, OutputStream作为基类,给它的基类定义了几个通用的函数:

write(byte[] b):将b的长度个字节数据写到输出流中。

write(byte[] b,int off,int len):从b的off位置开始,获取len个字节数据,写到输出流中。

flush():刷新输出流,把数据马上写到输出流中。

close():关闭流,释放系统资源。

FileOutputStream是用于写文件的输出流,它除了可以使用基类定义的函数外,还实现了OutputStream的抽象函数write(int b):

write(int b):将b转成一个字节数据,写到输出流中。

BufferedOutputStream像上面那个BufferedInputStream一样,都可以提高效率。它除了可以使用基类定义的函数外,它还实现了OutputStream的抽象函数write(int b):

write(int b):将b转成一个字节数据,写到输出流中。

使用:

OutputStream是抽象基类,所以它不能实例化,但它可以用于接口化编程。

FileOutputStream是用于写文件的输出流,所以它需要一个文件作为实例化参数,这个文件可以是File对象,也可以是文件路径字符串。【如果文件不存在,那么将自动创建。】【FileOutputStream实例化时可以给第二个参数,第二个参数是是否使用追加写入默认,为true时代表在原有文件内容后面追加写入数据,默认为false】

6a4471ee08c7e8f584a9a82078222856.png

BufferedOutputStream需要一个输出流作为实例化参数。

805b972311a9f7162422551365da43ca.png

补充:

上面的一些函数,考虑到效率问题,上面的子类可能会重写基类的函数,但功能基本是不变的。

更多关于字节流的函数与用法可以参考jdk文档。

字符流

字符流的类通常以reader和writer结尾

字符输入流:

常见的字符输入流有:

Reader

InputStreamReader

FileReader

BufferedReader

他们的区别与用途:

Reader是字符输入流的抽象基类 ,它定义了以下几个函数:

read() :读取单个字符,返回结果是一个int,需要转成char;到达流的末尾时,返回-1

read(char[] cbuf):读取cbuf的长度个字符到cbuf这种,返回结果是读取的字符数,到达流的末尾时,返回-1

close()  :关闭流,释放占用的系统资源。

InputStreamReader 可以把InputStream中的字节数据流根据字符编码方式转成字符数据流。它除了可以使用基类定义的函数,它自己还实现了以下函数:

read(char[] cbuf, int offset, int length) :从offset位置开始,读取length个字符到cbuf中,返回结果是实际读取的字符数,到达流的末尾时,返回-1

FileReader 可以把FileInputStream中的字节数据转成根据字符编码方式转成字符数据流。

BufferedReader可以把字符输入流进行封装,将数据进行缓冲,提高读取效率。它除了可以使用基类定义的函数,它自己还实现了以下函数:

read(char[] cbuf, int offset, int length) :从offset位置开始,读取length个字符到cbuf中,返回结果是实际读取的字符数,到达流的末尾时,返回-1

readLine() :读取一个文本行,以行结束符作为末尾,返回结果是读取的字符串。如果已到达流末尾,则返回 null

使用

Reader 是一个抽象基类,不能实例化,但可以用于接口化编程。

InputStreamReader需要一个字节输入流对象作为实例化参数。还可以指定第二个参数,第二个参数是字符编码方式,可以是编码方式的字符串形式,也可以是一个字符集对象。

dbf5a1c53b16adaf9362adbca99ffe38.png

FileReader 需要一个文件对象作为实例化参数,可以是File类对象,也可以是文件的路径字符串。

2581f7be6e13edc37759abccdb76281b.png

BufferReader需要一个字符输入流对象作为实例化参数。

c1e90a6fee719bbe59e857675580eaf1.png

7f24a08eb70e9c9b900109b47389cdfc.png

字符输出流:

常见的字符输出流有:

Writer

OutputStreamWriter

FileWriter

BufferedWriter

他们的区别与用途:

Writer是字符输出流的抽象基类, ,它定义了以下几个函数

write(char[] cbuf) :往输出流写入一个字符数组。

write(int c) :往输出流写入一个字符。

write(String str) :往输出流写入一串字符串。

write(String str, int off, int len) :往输出流写入字符串的一部分。

close() :关闭流,释放资源。 【这个还是抽象的,写出来是说明有这个关闭功能】

flush():刷新输出流,把数据马上写到输出流中。 【这个还是抽象的,写出来是说明有这个关闭功能】

OutputStreamWriter可以使我们直接往流中写字符串数据,它里面会帮我们根据字符编码方式来把字符数据转成字节数据再写给输出流,它相当于一个中介\桥梁。

FileWriter与OutputStreamWriter功能类似,我们可以直接往流中写字符串数据,FileWriter内部会根据字符编码方式来把字符数据转成字节数据再写给输出流。

BufferedWriter比FileWriter还高级一点,它利用了缓冲区来提高写的效率。它还多出了一个函数:

newLine() :写入一个换行符。

使用

Writer 是一个抽象基类,不能实例化,但可以用于接口化编程。

OutputStreamWriter 需要一个输入流对象作为实例化参数。

2f7c5ad521c01d2993ddfbc242ed3521.png

FileWriter 需要一个文件对象来实例化,可以是File类对象,也可以是文件的路径字符串。

738e2a7a3906b9466a2d9a409c61c74a.png

BufferWriter

0ae33fa820b50ef9efab4456a7d4bc23.png

0ead17abe2036f6193042706f63f217b.png

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

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

相关文章

任正非内部重磅发言:华为不可能简单学阿里、亚马逊

来源:券商中国辞旧迎新之际,华为创始人任正非此前在华为企业业务及云业务汇报会上的发言于华为心声社区曝光。任正非指出,华为企业业务要聚焦战略重点,继续做减法,收缩企业业务做战线,认真弄清楚做作战模型…

java8 迭代set集合_JavaSE(八)集合之Set

2.2、HashSet特点不能保证元素的排列顺序,顺序可能和添加的顺序不同,顺序也有可能发生变化。HashSetf不是同步的,如果多个线程同时来访问一个 HashSet,假设有两个或者两个以上线程同时修改了HashSet 集合时,则必须通过…

AI 发展方向大争论:混合AI ?强化学习 ?将实际知识和常识整合到AI中 ?

一个仿人机器人的延伸手。机器人常常使用强化学习来加以训练来源:云头条作者:Ben Dickson是一名软件工程师,还是探讨技术在如何解决和带来问题的TechTalks博客的创始人。2010年代对于AI界来说意义重大,这归功于深度学习领域取得了…

吴恩达:2020 年,这些 AI 大事件让我无法忘怀...

作者:吴恩达编译:陈大鑫、贝爽编辑:青暮转自:AI科技评论日前,吴恩达在圣诞节之际回顾了2020年AI的一些重大事件,包括AI应对新冠疫情、数据集存在种族偏见、对抗虚假信息算法、AlphaFold预测蛋白质三维结构、…

java工程师的一生_百看不厌之一张图诠释程序员的一生

原标题:百看不厌之一张图诠释程序员的一生01百看不厌系列之一张图诠释程序员的一生。02变得越来越强了...03不知道是干什么的,但又不敢删。。。04当前端的人抱怨Java 时,C程序员05给产品经理设计了一款趁手的宝贝06离职程序员交接项目07这位压…

好久没玩laravel了,5.6玩下(三)

好久没玩laravel了,5.6玩下(三) 好了,基础的测试通了,咱们开始增删改了 思路整理 先创建项目功能控制器 然后设置路由访问规则 然后开发项目的增删改功能 1 先创建项目的控制器 php artisan make:controller ProjectsC…

OpenAI祭出120亿参数魔法模型!从文本合成图像栩栩如生,仿佛拥有人类的语言想象力...

来源:AI科技评论作者:OpenAI编译:贝爽、陈大鑫前几个月GPT-3刚刚问世的时候,能够根据一段话就写出一个小说、一段哲学语录,就足以令AI圈为之感到兴奋。然而2020年刚刚开始没多久,OpenAI又实现一重大突破&am…

MySQL快速生成连续整数

很多时候需要用到连续的id进行数据对比,如判断是否连续等问题。那么,生成连续整数的方式有多种,首先容易想到的是逐步循环,如果想生成1kw条记录,则需要循环1kw次进行插入,那么有没有其他方式呢,…

MySQL小问题:The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents...

这是因为时区设置不对 问题背景: 在运行storm项目,进行页面显示的时候,报错: java.sql.SQLException: The server time zone value is unrecognized or represents more than one time zone. 这是时区的问题。 我采用的第一个…

中国电子信息工程科技发展十四大趋势(2021)

来源:科技日报、中国电子报(转载请注明来源)编辑:蒲蒲1月5日,中国工程院信息与电子工程学部、中国信息与电子工程科技发展战略研究中心发布“中国电子信息工程科技发展十四大趋势(2021)”&#…

rosserial_java_[学习笔记]Rosserial实现Windows-ROS交互操作(1)

安装sudo apt-get install ros-indigo-rosserial-windowssudo apt-get install ros-indigo-rosserial-server编译rosrun rosserial_windows make_libraries.py my_library运行后会产生一个my_library文件夹,在my_library这个文件夹下会生成ros_lib文件夹Windows下创…

Leetcode--122. 买卖股票的最佳时机Ⅱ

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉…

语法树的画法(根据文法求字符串)

目录 1.语法树的画法 2.语法树的短语 3.直接短语(直接到根部) 4.素短语 5.句柄 6.算符优先分析句型 1.语法树的画法 文法G[E]:E->EE | E*E | (E) | i ,字符串 ii*i 推导方式有两种最左推导和最右推导(推导的技巧就是逐步靠近字符串…

AI专家喋喋不休展开争论 为什么说预测是智能的本质

来源: 网易智能编译:网易智能 选自:medium参与:Rosie【网易智能讯 6月22日消息】机器学习和智能都植根于预测,这是巧合吗?当我们的技术体现了智能的本质时,我们正在接近一个紧要关头吗?或者说我…

图解丨卷积神经网络数学原理解析

原标题:Gentle Dive into Math Behind Convolutional Neural Networks作 者:Piotr Skalski 编 辑 | Pita  翻 译:通夜(中山大学)、had_in(电子科技大学)自动驾驶、智能医疗保健和自助零售这…

[2018湖南省队集训] 6.28 T3 simulate

这道模拟题出的我毫无脾气2333 最重要的是先要发现操作顺序不影响最后的答案,也就是每次随便挑一个>2的数进行操作最后总是可以得到同样的数列。 (这个还不太难想qwq) 但是最骚的是接下来的模拟。。。。 我们考虑从左到右消,假设目前在i,1…

“AI工厂”本质:AI基础设施及怎样将AI转化为运营动力

来源:TechTalks作者:Ben Dickson编译:科技行者持续关注人工智能新闻的朋友肯定已经发现,AI这个字眼已经被异化成了两个截然不同的定义。媒体和影视作品喜欢把AI描述成已然具备人类般的能力、会导致大量失业甚至会出动机械部队进行…

继续深入更新shell脚本容易出错的地方

一、在shell中用到如果需要输入某些值,需要用到read -p命令 这是我写的猜数字游戏,一开始在输出的时候,屏幕上总会打印输出 "INT" 经过反复的练习才发现 双引号后面应该跟着一个空格,然后在写变量,就不会把…

中国工程院发布2021中国电子信息工程科技发展十四大趋势

来源:人民邮电报1月5日,中国工程院信息与电子工程科技发展战略研究中心发布“中国电子信息工程科技发展十四大趋势(2021)”。这十四大趋势涵盖信息化、计算机系统与软件、网络与通信、计算机应用、网络安全、集成电路、数据、感知…

AcWing--2.01背包问题

有 NN 件物品和一个容量是 VV 的背包。每件物品只能使用一次。 第 ii 件物品的体积是 vivi,价值是 wiwi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 输入格式 第一行两个整数&#xff…