当前位置: 首页 > news >正文

I/O Stream设计实验

实验要求和目的

深入理解java输入输出流相关类的基本用法,并且可以掌握Java程序的编写和调试。

实验环境

Java语言,PC或android平台

实验具体内容

设计和编写以下程序:

程序1:

  1. 从键盘读入多行字符串(英文),并将其写入到一个文本文件(如学号1.txt)中。
  2. 统计字符串中所有的字符个数,并且显示个数信息。(在步骤1的文档中显示字符个数统计信息)如,this document contains XX bytes in total.

程序2:

  1. 从1中文本文件读取所有的字符串。
  2. 将内容在命令行窗口显示出来(要求去掉所有空格)。

实验步骤

对于程序一:

         实验要求我们从键盘输入多行文字,并存储在一个文件中,并统计字符的个数

首先定义一个文件的地址

在为此地址建立一个文件写入流

之后便可写入相关内容,定义一个循环,每次都输入一行文字,当一行输入仅为”over”时意味着写入结束,并输出文件的字符总大小

至此,文件写入结束,关闭写入流即可

对于程序二:

实验二要求我们在命令行中输出在程序一中所写入的除空格外的全部内容

首先,根据程序一中的文件地址创建一个字节输入流对象

对文件内容进行逐个读取字符,若字符为空格,跳过不再输出

        

至此,输出结束,关闭输入流即可

源代码

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Objects;
import java.util.Scanner;/*
test
I love China
And I love ShenZhen University
But I don't think it is right
over*/
//本包HW9的文件地址:"D:\IntelliJ IDEA 2023.2.5\test\HW9\Exercise.txt"
public class Q1 {static void input(String str) throws IOException {FileOutputStream f = new FileOutputStream(str, false); //append:在原有基础上添加内容//写入内容Scanner r = new Scanner(System.in);String s;s = r.nextLine();int num = 0;//when you input 'over', it would be endedwhile (!Objects.equals(s, "over")) {f.write(s.getBytes());num += s.length();s = r.nextLine();f.write('\n');}System.out.println("this document contains " + num + " bytes in total.");f.close();  //资源释放}public static void main(String[] args) throws IOException {String str = "D:\\IntelliJ IDEA 2023.2.5\\test\\HW9\\Exercise.txt";input(str);}
}
import java.io.*;
//本包HW9的文件地址:"D:\IntelliJ IDEA 2023.2.5\test\HW9\Exercise.txt"
public class Q2 {static void output(String s) throws IOException {//字节输入流FileInputStream f = new FileInputStream(s);//读取方法:逐步读取法,一个一个字符进行读取int a;while((a=f.read())!=-1) {if ((char) a != ' ')System.out.print((char) a);}f.close();}public static void main(String []args) throws IOException {String str="D:\\IntelliJ IDEA 2023.2.5\\test\\HW9\\Exercise.txt";output(str);}
}

相关文章:

  • QT 使用资源文件的注意点
  • C# 通过Path获取后缀,文件名,目录等
  • JAVA学习笔记DAY5——Spring_Ioc
  • 李诞-2021.8脱口秀工作手册-1-工作的本质是交易;脱口秀是一份和生活分不开的工作,你的全部人生都理应要为你的创作提供养分,为它服务。
  • 使用CSS、JavaScript、jQuery三种方式实现手风琴效果
  • AIGC全面介绍
  • 【数据结构陈越版笔记】进阶实验1-3.1:两个有序序列的中位数
  • Android APP memory统计方法
  • 2024-06-07 Unity 编辑器开发之编辑器拓展8 —— Scene 窗口拓展
  • 【C++】模板及模板的特化
  • MySQL的索引类型,以及各自的作用
  • Java面试题汇总(持续更新.....)
  • 四叉树和KD树
  • Java:112-SpringMVC的底层原理(下篇)
  • Rust基础学习-标准库
  • canvas 绘制双线技巧
  • EventListener原理
  • Java教程_软件开发基础
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • python学习笔记 - ThreadLocal
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Spring Boot快速入门(一):Hello Spring Boot
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 番外篇1:在Windows环境下安装JDK
  • 工程优化暨babel升级小记
  • 基于web的全景—— Pannellum小试
  • 简单实现一个textarea自适应高度
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 如何进阶一名有竞争力的程序员?
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 使用docker-compose进行多节点部署
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • # 消息中间件 RocketMQ 高级功能和源码分析(七)
  • #define
  • #define与typedef区别
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #WEB前端(HTML属性)
  • (4)Elastix图像配准:3D图像
  • (Matlab)使用竞争神经网络实现数据聚类
  • (不用互三)AI绘画工具应该如何选择
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (六)软件测试分工
  • (排序详解之 堆排序)
  • (一)十分简易快速 自己训练样本 opencv级联haar分类器 车牌识别
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .gitignore文件使用
  • .Mobi域名介绍
  • .net core 依赖注入的基本用发
  • .net dataexcel winform控件 更新 日志