首页 > 编程语言 >Educoder——JAVA高级特性 字节流-输入输出

Educoder——JAVA高级特性 字节流-输入输出

时间:2024-10-13 20:46:32浏览次数:9  
标签:Educoder JAVA 字节 代码 try IOException new txt out

任务描述

本关任务:使用输入输出流读写文件。

相关知识

为了完成本关任务,你需要掌握:

1.如何使用输入流;

2.如何使用输出流。

输入流

我们通过一个示例,来看看输入流应该如何使用,首先我们在D盘下创建一个hello.txt文件。输入文本Hello Java Hello InputStream

main方法中加入如下代码:

 

输出:

Hello Java Hello InputStream

代码解释:

这个例子我们主要目的是,读取文件中的数据并将数据显示在控制台。

实现步骤是:首先读取文件转换成文件输入流(FileInputStream),然后定义一个字节数组作为容器用来存储即将读取到的数据。fs.read(b)函数的作用是将数据读取到b数组中,最后通过编码表,将字节数组编码成字符。

 

输出流

我们使用输出流将字符串hello educoder写入到一个文件中:

 

运行这段代码,打开D盘下你会发现test.txt文件被创建了,并且文件的内容是hello educoder

代码解释:

 

最佳实践

上面作为示例的两段代码都是存在很大问题的,什么问题呢?

因为在Java中对于流的操作是非常消耗资源的,如果我们使用流对一个资源进行操作了之后却没有释放它的资源,这就会造成系统资源的浪费,如果积累了很多这种空置的资源,最后可能会导致系统崩溃。

上述代码的最佳实践为:


  1. OutputStream out = null;
  2. try {
  3. String file = "D://test.txt";
  4. out = new FileOutputStream(file);
  5. String str = "hello educoder";
  6. byte[] b = str.getBytes();
  7. out.write(b);
  8. out.flush();
  9. } catch (Exception e) {
  10. e.printStackTrace();
  11. } finally {
  12. if (out != null) {
  13. try {
  14. out.close(); // 释放该输出流
  15. } catch (IOException e) {
  16. e.printStackTrace();
  17. }
  18. }
  19. }

核心就是在使用完流之后,释放它所占用的资源。

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

  • 读取src/step2/input/目录下的task.txt文件信息并输出到控制台,使用Java代码将字符串learning practice写入到src/step2/output/目录下的output.txt,若文件目录不存在,则创建该目录。

注意:临时字节数组需要定义长度为8位,否则会有空格。

测试说明

补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

import java.io.FileWriter;
import java.io.IOException;

public class Task {
	
	public void task() throws IOException{
		/********* Begin *********/
		File file = new File("src/step2/input/task.txt");
        FileInputStream fs = null;
        try {
            fs = new FileInputStream(file);
            byte[] b = new byte[8];
            int bytesRead = fs.read(b);
            if (bytesRead > 0) {
                String str = new String(b, 0, bytesRead, "UTF-8");
                System.out.println(str);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fs != null) {
                try {
                    fs.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
		File dir = new File("src/step2/output");
		if(!dir.exists()){
			dir.mkdir();
        }
        FileOutputStream out = null;
        try {
            String file1 = "src/step2/output/output.txt";
            out = new FileOutputStream(file1);
            String str1 = "learning practice";
            byte[] c = str1.getBytes();
            out.write(c);
            out.flush();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (out != null) {
                try {
                    out.close(); // 释放该输出流
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
		/********* End *********/
	}
	
}

 

标签:Educoder,JAVA,字节,代码,try,IOException,new,txt,out
From: https://blog.csdn.net/f3244077856/article/details/142849427

相关文章

  • 2024Java最新面试题总结(针对于一些小厂、中厂)
    这是根据个人面试经历总结出来的一些经验希望可以帮助到有需要的人。面试的时候,会先让你进行自我介绍,这个大家准备一两分钟的面试稿就可以。然后就是正式面试,面试官一般是两个人以上,开始,面试官会先提问一些基本知识,很基础,基本这个大家是没什么问题的,都可以回答应对。最重要的......
  • Java JWT:原理、机制及案例示范
    一、什么是JWT?1.1JWT的基本概念JWT(JSONWebToken)是一种用于在各方之间传递JSON格式信息的紧凑、URL安全的令牌(Token)。JWT的主要作用是验证用户身份或权限。它由三部分组成:Header(头部):标识令牌的类型和加密算法。Payload(载荷):包含了实际的身份信息及其他数据。Signature(签......
  • 高校宿舍管理系统的设计与实现(Java+ssm+万字文档+系统源码+数据库 +调试)
    摘 要本文是对高校宿舍管理系统的概括总结,主要从开题背景,课题意义,研究内容,开发环境与技术,系统分析,系统设计,系统实现这几个角度来进行本高校宿舍管理系统的阐述。高校宿舍管理系统运用Eclipse工具进行开发,使用Java语言进行编码,后台框架采用SSM框架(Spring框架、SpringMVC框......
  • 基于VUE+ssm框架的在线交友系统(Java+ssm+万字文档+系统源码+数据库 +调试)
    摘要本文介绍了在线交友系统的开发全过程。通过分析企业对于在线交友系统的需求,创建了一个计算机管理在线交友系统的方案。文章介绍了在线交友系统的系统分析部分,包括可行性分析等,系统设计部分主要介绍了系统功能设计和数据库设计。本在线交友系统管理员功能有个人中心,用户......
  • Java日总结 --- JDBC
    JDBCAPI---StatementDDL为对数据库和表的增删改查操作,DML是对数据的增删改操作,DQL是对数据的查询操作Statement对象中的executeUpdate(sql)方法为执行sql语句的操作,同时该方法会返回一个值,为受影响的行数,也就是执行语句的条数当执行的是DML语句时,可以通过返回值是否大于......
  • JAVA毕业设计189—基于Java+Springboot+vue的自动售水机管理系统(源代码+数据库+13000
    毕设所有选题:https://blog.csdn.net/2303_76227485/article/details/131104075基于Java+Springboot+vue的自动售水机管理系统(源代码+数据库+13000字论文+任务书)189一、系统介绍本项目前后端分离(可以改为ssm版本),分为用户、员工、管理员三种角色1、用户:注册、登录、......
  • Java中的Iterator接口,以及HashSet和TreeSet
    在Java编程中,`Iterator`接口是一个非常重要的概念,它为我们提供了一种统一且方便的方式来遍历集合(如`List`、`Set`、`Map`等数据结构中的元素,不过遍历`Map`时稍显特殊,通常是遍历其键值对的集合视图)。##一、Iterator接口的定义与方法`Iterator`接口位于`java.util`包中,它定义......
  • StringUtils Java字符串工具类
    在我们的代码中经常需要对字符串判空,截取字符串、转换大小写、分隔字符串、比较字符串、拼接字符串、使用正则表达式等等。如果只用String类提供的那些方法,我们需要手写大量的额外代码,不然容易出现各种异常。现在有个好消息是:org.apache.commons.lang3包下的StringUtils工......
  • [vue3 JavaScript CSS]实现电商网站商品预览,图片放大镜功能
    da效果预览:当鼠标浮在图片上时,灰色小框跟随鼠标运动。右侧大图显示。灰色框不会跑出图片,鼠标移动,右侧大图相应跟随移动。实现思路在实现前,我们想梳理一下我们要实现什么功能灰色框跟随鼠标移动,注意处理边界情况当鼠标进入时右侧大图出现,鼠标移出时右侧大图消失鼠标向左......
  • Java——数组的定义与使用
    各位看官:如果您觉得这篇文章对您有帮助的话欢迎您分享给更多人哦感谢大家的点赞收藏评论,感谢您的支持!!!一:数组的概念以及定义,初始化1.1:数组概念以及定义数组概念:可以看成是相同类型元素的一个集合。数组定义:三种方法T[]数组名=newT[N];例如:int[]a......