学习-Java输入输出之OutputStream类之字节数据输出
admin
2024-02-23 07:51:37
0

任务描述

本关任务:使用字节输出流将给定的字符串写入到给定的文件中。

相关知识

什么是 OutputStream 类

OutputStream 类是 Java 标准库提供的最基本的字节输出流。OutputStream 类也是抽象类,它是所有输出流的超类。

OutputStream 类的常用方法

  • write()方法:这个方法会写入一个字节到输出流;
  • close()方法:这个方法用于关闭输出流;
  • flush()方法:这个方法是将缓冲区的内容真正输出到目的地。

OutputStream 类的常用子类

  • FileOutputStream 类:用于将数据写入到输出流文件;
  • ByteArrayOutputStream 类:在内存中模拟一个字节流输出。。

由于 OutputStream 类是抽象类,我们以它的子类 FileOutputStream 类为例,演示如何将数据写入到文件中。 将若干个字节写入文件流示例:

 
  1. public static void main(String[] args) throws IOException{ // 抛出异常
  2. // 创建FileOutputStream对象
  3. OutputStream output = new FileOutputStream("C:\\Users\\yy\\Desktop\\a.txt");
  4. // 写入字节
  5. output.write(72); // 72代表H,以下类推
  6. output.write(101); // e
  7. output.write(108); // l
  8. output.write(108); // l
  9. output.write(111); // o
  10. // 关闭流
  11. output.close();
  12. }

执行结果:在C:/Users/yy/Desktop目录下的a.txt文件中写入了 Hello 字符串。

每次写入一个字节非常麻烦,更常见的方法是一次性写入若干字节。这时,可以用 OutputStream 提供的重载方法 write(byte[]) 来实现:

 
  1. public static void main(String[] args) throws IOException{
  2. // 创建FileOutputStream对象
  3. OutputStream output = new FileOutputStream("C:\\Users\\yy\\Desktop\\a.txt");
  4. // 写入数据
  5. output.write("Hello".getBytes("UTF-8")); // 将字符串通过getBytes()方法转换为字节数组
  6. // 关闭流
  7. output.close();
  8. }

和 InputStream 类一样,上述代码没有考虑到在发生异常的情况下如何正确地关闭资源。写入过程也会经常发生 IO 错误,例如,磁盘已满,无权限写入等等。我们需要用 try(resource) 来保证 OutputStream 类在无论是否发生 IO 错误的时候,都能够正确地关闭:

 
  1. public static void main(String[] args) throws IOException{
  2. try{
  3. // 创建FileOutputStream对象
  4. OutputStream output = new FileOutputStream("C:\\Users\\yy\\Desktop\\a.txt");
  5. // 写入数据
  6. output.write("Hello".getBytes("UTF-8")); // 将字符串通过getBytes()方法转换为字节数组
  7. } // 编译器在此自动为我们写入finally并调用close()
  8. }
    import java.io.*;
    import java.util.Scanner;public class FileTest {public static void main(String[] args) throws IOException {// 请在Begin-End间编写完整代码/********** Begin **********/// 接收给定字符串Scanner input = new Scanner(System.in);String str = input.next();// 切割字符串String[] array = str.split(",");// 创建FileOutputStream对象FileOutputStream fileOutputStream = new FileOutputStream(array[1]);// 写入数据fileOutputStream.write(array[0].getBytes());fileOutputStream.close();  /********** End **********/}
    }

相关内容

热门资讯

南昌闲置金饰变现 回收金项链需... 随着近年黄金价格持续波动,不少持有闲置黄金首饰的居民都有变现需求,回收金项链是其中较为常见的业务类型...
原创 7... 昨天刷到日本三菱电机的动向有点荒诞:这家做家电的巨头最近牵头搞了个回收项目,每年拆23万台废旧家用空...
公募FOF基金经理展望下半年:... ◎记者 陈玥 2026年上半年,全球市场在流动性宽松与产业趋势共振的驱动下,上演了一出“冰火两重天”...
全市场规模最大ETF易主!黄金... 截至7月6日收盘,全亚洲规模最大的黄金ETF标的——黄金ETF华安(518880)报8.63元,本月...
上半年IPO申报放量升温,科创... 2026年上半年的IPO市场,在6月迎来了集中交卷。Wind数据显示,上半年三大交易所合计新增受理I...
管好养老钱壮大耐心资本 保险资... 段国圣,理学硕士,工学博士,经济学博士后,数学副教授,应用经济学研究员(教授)。深耕保险投资30余年...
惠州A股上市公司一年半市值翻倍... 每经记者:孔泽思 每经编辑:袁东 |2026年7月7日 星期二| NO.1 深圳集成电路产业去年营收...
植物性饮食的新课题:荷兰研究揭... 周末的家常餐桌上,一家人尝试用植物性替代品替代肉鱼和奶制品,孩子吃得香,老人也在细嚼慢咽中尝试豆类与...
周一(7月6日),美股行业ET... 周一(7月6日),美股行业ETF多数收涨,全球科技股指数ETF涨2.18%,半导体ETF涨2.03%...
想在吉林做卤味加盟怎么判断企业... 有意向了解卤味加盟的创业者,往往首先关注合作企业的专业度,当前休闲卤味消费市场规模稳步增长,不同企业...
华府消息|北约盟友经历从奉承特... (来源:华府圈内) 今天是《华府消息》连续更新的第2218天 7月4日独立日烟花表演期间,纽约布鲁克...
兴财说 | A股风格高低切换,... (来源:兴华基金) ►►► 权益市场表现 01 市场表现回顾 数据来源:iFinD,统计区间:20...
加息押注削弱 黄金白银连续上涨 (来源:金砖汇通) 贵金属分析 现货黄金交投于4130美元附近,美联储9月加息押注下降推动金价走高...
SpaceX“二把手”官宣向“... 转自:财联社 财联社7月7日讯(编辑 赵昊)SpaceX总裁兼首席运营官格温·肖特韦尔(Gwynne...
沈阳茅台回收怎么挑选合规的回收... 随着国内礼品消费市场的发展,不少居民手中都持有闲置的高端礼品,包括名酒、黄金、奢侈品等,有变现需求的...
北京再开店 沃尔玛试水“平价山... (来源:北京商报) 沃尔玛想要翻开新篇章。近日,北京商报记者从沃尔玛中国独家获悉,公司正在北京积极推...
午盘:美股涨跌不一 科技股推动... 来源:环球市场播报 北京时间7月7日晚,美股周一午盘涨跌不一,科技股普涨推动纳指走高。市场关注的焦点...
【原创】海北州组织开展公平竞争... 为严格落实公平竞争审查制度“进党校、进机关、进企业”工作要求,持续规范各行业领域政策制定行为,破除市...
“物流界滴滴”赴港IPO:地上... 瑞财经 吴文婷 近日,地上铁绿色科技(深圳)股份有限公司(以下简称“地上铁”)在港交所递交招股书,联...
原创 一... 2026年7月2日,美国劳工部发布6月非农就业报告,美国6月新增就业岗位只有5.7万个,连市场预期的...