Java中的I/O操作可以分为两种类型:字节流和字符流。字节流用于处理二进制数据,而字符流用于处理文本数据。本文将详细介绍Java中的字节流和字符流,并给出相应的示例代码。
(资料图片仅供参考)
一、字节流
Java中的字节流主要用于处理二进制数据,如图像、音频和视频等。Java中的字节流主要分为InputStream和OutputStream两种类型。
InputStream
InputStream是Java中所有输入流的基类。InputStream中定义了许多方法用于读取字节。以下是InputStream中一些常用的方法:
int read(): 从输入流中读取一个字节的数据。如果已到达文件结尾,则返回-1。int read(byte[] b): 从输入流中读取最多b.length个字节的数据,并将其存储到缓冲区b中。返回实际读取的字节数。int available(): 返回可以从输入流中读取的字节数。下面是一个从文件中读取数据并将其显示在控制台上的示例:
import java.io.*;public class InputStreamExample { public static void main(String[] args) throws IOException { InputStream in = new FileInputStream("test.txt"); int b; while ((b = in.read()) != -1) { System.out.print((char) b); } in.close(); }}在上述示例中,我们使用FileInputStream打开一个文件,并使用read()方法读取文件中的每一个字节,并将其显示在控制台上。
OutputStream
OutputStream是Java中所有输出流的基类。OutputStream中定义了许多方法用于写入字节。以下是OutputStream中一些常用的方法:
void write(int b): 将指定的字节写入输出流中。void write(byte[] b): 将指定的字节数组中的数据写入输出流中。void flush(): 刷新输出流并强制写入所有缓冲的输出字节。下面是一个将数据写入文件的示例:
javaCopy codeimport java.io.*;public class OutputStreamExample { public static void main(String[] args) throws IOException { OutputStream out = new FileOutputStream("test.txt"); String str = "Hello, world!"; byte[] b = str.getBytes(); out.write(b); out.close(); }}在上述示例中,我们使用FileOutputStream打开一个文件,并使用write()方法将一个字符串转换为字节数组,然后将其写入文件中。
二、字符流
Java中的字符流主要用于处理文本数据。字符流可以直接处理Unicode字符,因此在处理中文等特殊字符时很方便。Java中的字符流主要分为Reader和Writer两种类型。
Reader
Reader是Java中所有读取字符流的基类。Reader中定义了许多方法用于读取字符。以下是Reader中一些常用的方法:
int read(): 从输入流中读取一个字符的数据。如果已到达文件结尾,则返回-1。int read(char[] c): 从输入流中读取最多c.length个字符的数据,并将其存储到缓冲区c中。返回实际读取的字符数。下面是一个从文件中读取数据并将其显示在控制台上的示例:
import java.io.*;public class ReaderExample { public static void main(String[] args) throws IOException { Reader reader = new FileReader("test.txt"); int c; while ((c = reader.read()) != -1) { System.out.print((char) c); } reader.close(); }}在上述示例中,我们使用FileReader打开一个文件,并使用read()方法读取文件中的每一个字符,并将其显示在控制台上。
Writer
Writer是Java中所有写入字符流的基类。Writer中定义了许多方法用于写入字符。以下是Writer中一些常用的方法:
void write(int c): 将指定的字符写入输出流中。void write(char[] c): 将指定的字符数组中的数据写入输出流中。void flush(): 刷新输出流并强制写入所有缓冲的输出字符。下面是一个将数据写入文件的示例:
import java.io.*;public class WriterExample { public static void main(String[] args) throws IOException { Writer writer = new FileWriter("test.txt"); String str = "Hello, world!"; writer.write(str); writer.close(); }}在上述示例中,我们使用FileWriter打开一个文件,并使用write()方法将一个字符串写入文件中。
三、字节流和字符流的区别
在Java中,字节流和字符流有以下区别:
处理的数据类型不同
字节流主要用于处理二进制数据,如图像、音频和视频等。字符流主要用于处理文本数据。
输入/输出方式不同
字节流以字节为单位进行读取和写入,而字符流以字符为单位进行读取和写入。
编码方式不同
字节流不关心数据的编码方式,可以处理任何类型的数据。而字符流必须使用特定的字符编码方式,如UTF-8或GBK,以正确地处理文本数据。
X 关闭
-

2023-04-04
【世界新视野】java字节流和字符流
-

2023-04-04
快报:基建、国企共赢ETF涨超3%;公募基金密集调仓AI方向;周蔚文3只基金加仓丽江股份
-

2023-04-04
全球球精选!steam先以礼物购买
-

2023-04-04
今日热搜:弘扬英烈精神 赓续红色基因 我市社会各界开展清明祭英烈活动
-

2023-04-04
全球要闻:2022年全国体操冠军赛决赛线下购票点在哪
-

2023-04-04
环球快看点丨长春三模2023各科试卷及答案解析_更新中
-

2023-04-04
环球聚焦:丑出天际?MINI COOPER S纯电实车曝光!
-

2023-04-04
世界微动态丨湖北文旅建发集团一季度实现销售金额9亿元
-

2023-04-04
焦点热议:陶白白是什么梗谁能告诉我_陶白白是什么梗
-

2023-04-04
焦点快播:库斯托维奇
-

2023-04-04
今热点:谁掌握了“标准”谁就有了话语权?极狐汽车考拉赋能母婴幸福出行
-

2023-04-04
全球快讯:贵阳市跨境电商青年创业创新大赛复赛落幕
-

2023-04-04
世界信息:普京签令:授予圣彼得堡咖啡馆爆炸案中身亡的战地记者“勇气勋章”
-

2023-04-04
焦点热讯:财报榜单|智能穿戴概念股2022年第三季度毛利率排行榜
-

2023-04-04
焦点速递!曼联跌至第五!英超激烈争四:3队同积50分 谁能拿到欧冠资格?
-

2023-04-04
全球滚动:这颗“千眼天珠”首次成功探测脉冲星,还能拍太阳“打喷嚏”
-

2023-04-04
世界观察:商务部:聚焦汽车、家电等领域,推动出台一批促消费政策
-

2023-04-04
环球实时:八月炸能吃吗有营养吗_八月炸能吃吗
-

2023-04-03
世界信息:你会把你女朋友的私密照卖了还赌债么?
-

2023-04-03
每日速读!超八成券商去年营收净利双降 海通证券“减薪”逾40%
-

2023-04-03
每日快报!退役军人事务部:3年来已为6300多位烈士找到亲属
-

2023-04-03
环球资讯:业绩确定性丝毫不差于茅台,药明康德,稳得不能更稳的2022年报
-

2023-04-03
焦点热文:江特电机:拟斥0.5亿元-1亿元回购公司股份
-

2023-04-03
【天天报资讯】宁波:发布学生成长场域资源手册 引导中小学生走进“第二课堂”
-

2023-04-03
要闻速递:“碳中和”时代 科华数据助力构建绿色低碳的数据中心
-

2023-04-03
天天日报丨史玉柱:游戏+AI将是大势所趋
-

2023-04-03
【全球快播报】新华网4月3日盘中涨停
-

2023-04-03
世界讯息:盘缠龙鳞八股手链编法_盘缠
-

2023-04-03
全球热文:《和平精英》花圃种子购买方法
-

2023-04-03
环球时讯:山洪砂土

