学习-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 **********/}
    }

相关内容

热门资讯

原创 5... 今天早上9点40分,国内现货黄金的人民币报价来到了1029.53元每克,算下来比昨天跌了4.78块钱...
雷军追慕马斯克,深谙时代造王规... 今天亿万富翁马斯克到访中国,瞬间成为舆论热议焦点,一系列故事也让人津津乐道。 上午现身人民大会堂,一...
最新!邢台500亿国企董事长换... 5月12日,河北顺德投资集团有限公司发布重大人事变动公告。 根据相关文件,公司原董事、总经理翟义琢...
新华图讯 | 习近平为美国总统... 5月14日晚,国家主席习近平在北京人民大会堂举行宴会,欢迎美国总统特朗普访华。 摄影:李...
原创 拿... 如果你交的税款被政府拿去在股市里“冲杀”,你会觉得这是发财的机遇,还是崩盘的前兆? 就在最近,特朗普...
畅通小微金融服务堵点 国家开发银行最新发布的数据显示,今年一季度,该行发放稳外贸专项转贷款285.4亿元,支持外贸小微企业...
原创 白... 2026年5月11日晚间,伦敦现货白银市场出现剧烈波动,单日大幅拉升近7%,盘中价格一度逼近86美元...
美股收盘:三大指数集体收涨,英... 美东时间周四,美国三大股指全线收涨。截至收盘,道指涨0.75%报50063.46点,标普500指数涨...
【聚焦】汇总 | 52家包装印... 根据中国证券报网站公开信息,中国印工协出版物印刷资讯汇总整理了52家包装印刷产业链上市公司2025年...
Cerebras上市首日股价飙... 5月15日消息,据CNBC报道,人工智能芯片制造商Cerebras周四在纳斯达克上市首日股价飙升68...
2026年 鞍钢电工钢供货渠道... 在新能源、高效节能变压器及高端电机产业快速发展的背景下,电工钢作为关键软磁材料,其供应链的稳定性与专...
白酒板块久违“吸金”!成交额创... 财联社5月14日讯(编辑 梓隆),今日(5月14日),白酒板块迎来久违的热度修复,截至收盘,剔除停牌...
携程、美团、阿里抢的不是旅游攻... 今年五一,旅游行业有个变化特别明显。 不是游客多了,也不是机票酒店卖爆了,而是用户开始把“决策权”交...
中美科技大佬同席特朗普访华欢迎... 本文来源:消费者报道 作者:肖道 5月14日晚,欢迎美国总统特朗普访华的宴会在北京人民大会堂举行,中...
成都这杯“盖碗茶”为全球投资者... 一杯盖碗茶,品出的是一座城市与世界双向奔赴的开放姿态。5月14日下午,作为2026成都国际友城合作与...
AI购物聊了两年,为什么今天才... 文|王熠 一个用户对千问说:“我想减肥,帮我推荐一些训练装备。” 千问的回答是:不建议买,你拥有的...
美参议院批准凯文·沃什出任美联... 当地时间5月13日,央视记者获悉,美国国会参议院当日以54票赞成、45票反对的投票结果,正式批准凯文...
测血糖怕疼、嫌麻烦?这6个方法... “一天扎好几次手指,手指头都快成筛子了……” “每次测血糖之前都紧张半天,下不去手。” “上班忙、带...
洋河迎来价值重估时刻:从消费者... 5月12日,洋河股份举行2025年度网上业绩说明会。洋河股份董事长、总裁顾宇带领管理层集体出席。 这...
四大指数集体收跌,沪指失守42... 每经记者:杜波 记者|杜波 编辑|陈柯名杜恒峰校对|程鹏 14日,A股市场震荡调整,截至收盘,创业...