学习-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月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万个,连市场预期的...
燕京啤酒发半年业绩预告:归母净... 即使还在增长阶段,但燕京啤酒归母净利润的增速不再“狂飙”。 7月6日晚间,南都湾财社-酒水新消费指数...
Crusoe据报道正以300亿... 据报道,数据中心建设商Crusoe公司正在洽谈一轮30亿美元的融资。 彭博社周四援引知情人士消息称,...
A股“加时”25分钟!主板风险... 7月6日起,你的股票交易方式变了。 2026年7月6日,全新修订的沪深北交易所《交易规则》正式落地...
施罗德基金副总经理、首席投资官... 每经记者:任飞 每经编辑:叶峰 7月6日,施罗德基金发布公告称,副总经理、首席投资官安昀因工作需要于...
SK海力士启动赴美上市推介 有... 来源:环球市场播报 SK海力士周一正式启动赴美上市的推介程序。这家韩国芯片制造商希望借助投资者对炙手...
保税区报关企业选型参考:电子制... 导语:基于行业公开信息与近三年贸易数据,保税区报关业务在电子制造、家电等领域的需求持续攀升。2025...
20余家A股公司提示交易风险 ... 【大河财立方消息】7月6日晚间,20余家A股公司发布股票交易异常波动公告或股票交易风险提示公告,包括...