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

Java_IO流,书城IO版

1.字符IO流的输入/输出

首先,IO流根据多方面划分。

  1. 根据方向划分
    输入流/输出流
  2. 根据处理单元划分
    字节流/字符流
  3. 根据功能划分
    节点流/处理流
    在这里插入图片描述
    尝试一下使用字符输入流在读写文件:
package IOStream;import java.io.*;public class Test {public static void main(String[] args) throws IOException {//对文件进行操作,将文件封装为对象File f = new File("d:\\test.txt");//输入字符流,io流FileReader fr = new FileReader(f);//每次只读取一个字符,若读取到文件末尾,则不再进行输出int n1 = fr.read();while(n1!=-1){System.out.println(n1);n1 = fr.read();}//        System.out.println(n1);fr.close();String str = "IOStream Output Test";FileWriter fw = new FileWriter(f);fw.write(str);fw.close();}
}

原本txt文件中有自己的内容,但写入流写入的内容会把原来的文件内容直接覆盖掉。

2.书城项目IO版

之前有个很简单的项目,书城,是用集合来存储书籍信息的,这边改进一下,使用文件来存储信息了

在这里插入图片描述
首先,要想实现将对象内容序列化输出到文件中,需要先让Book对象实现Serializable功能

package bookstorw;import java.io.Serializable;public class Book implements Serializable {//书籍编号private int bno;//书籍名称private String bname;//书籍作者private String bwriter;public int getBno() {return bno;}public void setBno(int bno) {this.bno = bno;}public String getBwriter() {return bwriter;}public void setBwriter(String bwriter) {this.bwriter = bwriter;}public String getBname() {return bname;}public void setBname(String bname) {this.bname = bname;}public Book() {}public Book(int bno, String bname, String bwriter) {this.bno = bno;this.bname = bname;this.bwriter = bwriter;}public static void main(String[] args) {}
}

然后改进一下写入读取功能,现在是用流将集合写入文件或者从文件中读取出来

package bookstorw;import com.sun.corba.se.impl.io.OutputStreamHook;import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;public class Test {public static void main(String[] args) throws IOException, ClassNotFoundException {while(true) {System.out.println("欢迎来到书城:");System.out.println("1.展示书籍:");System.out.println("2.上新书籍:");System.out.println("3.下架书籍:");System.out.println("4.退出应用:");//借助Scanner类,扫描键盘输入Scanner sc = new Scanner(System.in);System.out.println("请输入整数序号。");//获取键盘输入的整数值int choice = sc.nextInt();if (choice == 1) {System.out.println("1>>>>>展示书籍");//从文件中读取File f = new File("d:\\test.txt");if(f.exists() == true){FileInputStream fi = new FileInputStream(f);ObjectInputStream fooin = new ObjectInputStream(fi);//在这边读出来的是个对象,所以要做强制类型转换ArrayList list = (ArrayList)(fooin.readObject());for(int i = 0;i <= list.size() - 1; i++){//获取到i之后,将他强制转换为book类型的对象Book b = (Book)(list.get(i));System.out.println(b.getBno()+"----"+b.getBname()+"-----"+b.getBwriter());}}else{System.out.println("书籍不存在,请先上新");}}if (choice == 2) {System.out.println("2>>>>>上新书籍");//从键盘录入书籍信息System.out.println("请输入书籍编号:");int bNo = sc.nextInt();System.out.println("请输入书籍名字:");String bName = sc.next();System.out.println("请输入书籍作者:");String bWriter = sc.next();//创建一个书籍对象Book b = new Book();b.setBno(bNo);b.setBname(bName);b.setBwriter(bWriter);File f = new File("d:\\test.txt");FileInputStream fi = new FileInputStream(f);ObjectInputStream fooin = new ObjectInputStream(fi);ArrayList list = (ArrayList)(fooin.readObject());//创建一个集合,存放书籍对象
//                ArrayList list = new ArrayList();list.add(b);File f2 = new File("d:\\test.txt");FileOutputStream fos = new FileOutputStream(f2);ObjectOutputStream oos = new ObjectOutputStream(fos);oos.writeObject(list);oos.close();fos.close();}if (choice == 3) {System.out.println("3>>>>>下架书籍");System.out.println("录入需要下架的书籍的编号:");int deleteBook = sc.nextInt();//                for(int i = 0;i <= list.size() - 1; i++){
//                    //获取到i之后,将他强制转换为book类型的对象
//                    Book b = (Book)(list.get(i));
//                    if(b.getBno() == deleteBook){
//                        list.remove(b);
//                        System.out.println("书籍下架成功。");
//                        break;
//                    }
//                }}if (choice == 4) {System.out.println("4>>>>>退出应用");break;}}}}

后面再优化就是写入读出数据库

相关文章:

Java_IO流,书城IO版

1.字符IO流的输入/输出 首先&#xff0c;IO流根据多方面划分。 根据方向划分 输入流/输出流根据处理单元划分 字节流/字符流根据功能划分 节点流/处理流 尝试一下使用字符输入流在读写文件&#xff1a; package IOStream;import java.io.*;public class Test {public stati…...

2023自动化测试岗位需求的 7 项必备技能 (最新版)

目录&#xff1a;导读 一、自动化测试员技能——编程语言 二、自动化测试员技能–出色的手动测试技能 三、.自动化测试员技能–自动化工具专业知识 四、自动化测试员技能–了解业务需求 五、自动化测试员技能–自动化工具故障排除 六、自动化测试员技能–具有测试管理工具…...

【华为OD机试模拟题】用 C++ 实现 - 路灯照明(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明路灯照明【华为OD机试模拟题】题目输入输出描述示例一输入输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高…...

学到贫血之-贫血模型和充血模型

学习自&#xff1a;设计模式之美 1 基于贫血模型的传统开发模式 // ControllerVO(View Object) public class UserController {private UserService userService; //通过构造函数或者IOC框架注入public UserVo getUserById(Long userId) {UserBo userBo userService.getUser…...

Java常用组件面试题

文章目录HTTP通信协议Kafka消息队列Linux操作系统Mybatis框架SpringCloud框架HTTP通信协议 https通信过程 https协议是指对通过http协议传输数据的进行加密和解密。当客户端发送https请求时&#xff0c;服务端会返回数字证书给客户端&#xff0c;客户端验证通过后会生成随机数…...

MySQL常见问题的解决方法

目录 cmd没有管理员权限 没有my.ini这个文件 ERROR 1045 (28000): Access denied for user ODBClocalhost (using password: NO) ERROR 1045 (28000): Access denied for user rootlocalhost (using password: NO) 其他常见问题 cmd没有管理员权限 cmd一定要用管理员权限打…...

全网详细介绍nginx的反向代理、正向代理配置,location的指令说明,反向代理的两个示例代码以及全局块,events块和http快的说明。

文章目录1. 文章引言2. 何谓反向代理3. 解析nginx的配置文件3.1 全局块(global block)3.2 events块(events block)3.3 http块(http block)4. 如何配置反向代理4.1 反向代理示例14.2 反向代理示例25. 补充说明5.1 location指令说明5.2 nginx完整配置文件1. 文章引言 如果你的服务…...

容斥恒等式的证明

容斥恒等式的证明 推广公式 P(A∪B)P(A)P(B)−P(A∩B)P(A\cup B)P(A)P(B)-P(A\cap B) P(A∪B)P(A)P(B)−P(A∩B) (a)设A、B、C为三个事件&#xff0c;则下列恒等式成立&#xff1a; P(A∪B∪C)P(A)P(B)P(C)−P(A∩B)−P(A∩C)−P(B∩C)P(A∩B∩C)P(A\cup B\cup C)P(A)P(B)P(C)…...

Java中的this与super关键字深度解析

一、this关键字this 关键字是 Java 常用的关键字&#xff0c;可用于任何实例方法内指向当前对象&#xff0c;也可指向对其调用当前方法的对象&#xff0c;或者在需要当前类型对象引用时使用。&#xff08;1&#xff09;this.属性名this修饰的变量用于指代成员变量方法的形参如果…...

CSS3新增的视口单位Vh、Vw单位

定义vw&#xff1a;浏览器可见视口【宽度】的百分比&#xff08;1vw代表视窗【宽度】的1%&#xff09;vh&#xff1a;浏览器可见视口【高度】的百分比&#xff08;1vw代表视窗【高度】的1%&#xff09;vmin&#xff1a;当前 vw 和 vh 较小的一个值。vmax&#xff1a;当前 vw 和…...

【Linux】yum安装docker指定版本

&#x1f341;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; 文章目录卸载已有的docker部署指定版本docker安…...

SpringBoot相关操作

01-今日内容 Spring概述、快速入门SpringBoot配置SpringBoot整合 02-SpringBoot概述 SpringBoot提供了一种快速使用Spring的方式&#xff0c;基于约定优于配置的思想&#xff0c;可以让开发人员不必在配置与逻辑业务之间进行思维的切换&#xff0c;全身心的投入到逻辑业务的…...

Python super()函数:调用父类的构造方法

Python 中子类会继承父类所有的类属性和类方法。严格来说&#xff0c;类的构造方法其实就是实例方法&#xff0c;因此毫无疑问&#xff0c;父类的构造方法&#xff0c;子类同样会继承。 但我们知道&#xff0c;Python 是一门支持多继承的面向对象编程语言&#xff0c;如果子类…...

@ConfigurationProperties在方法上的使用

文章目录1. 前言2. 先说结论3. 代码解释1. Component ConfigurationProperties2. EnableConfigurationProperties ConfigurationProperties3. Bean ConfigurationProperties1. 前言 在学习spring的时候&#xff0c;ConfigurationProperties应该经常被使用到&#xff0c;作用…...

【QT】如何查找和获取界面上的子部件(findChild 和 findChidren)

目录1. findChild()函数2. findChildren()函数3. 示例1. findChild()函数 函数原型&#xff1a; T QObject::findChild(const QString &name QString(), Qt::FindChildOptions options Qt::FindChildrenRecursively) const返回该对象的子对象&#xff0c;该子对象可以转…...

MIT 6.S081学习笔记

计划花25天时间学完6.S081课程&#xff0c;从2月20日-3月20日。课程主页Link   xv6 book   GDB User Manual Lecture 1: Introduction and Examples课程主题&#xff1a;设计和实现操作系统   OS的三大功能&#xff1a;多路复用、隔离和交互。 Lab: Xv6 and Unix utiliti…...

《网络安全入门到精通》 - 2.1 - Windows基础 - DOS命令Windows防火墙Windows共享文件

「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「订阅专栏」&#xff1a;此文章已录入专栏《网络安全入门到精通》 Windows基础一、DOS命令1、目录文件操作dir 列出目录文件cd 切换目录md 创建目录rd 删除目录move 移动文件或目…...

八、Vben框架动态生成可编辑Table

开发过程中产品经理提出了一些奇怪的需求&#xff0c;让人很摸不着头脑&#xff0c;一问就是客户的需求就是这样&#xff0c;那么我们开发只能想各种办法啦。 最近就提出了两个需求&#xff0c; 第一个是需要在日期选择的时候根据时间选择的不同让底下table中增加两个时间中间的…...

浅谈ERP数据的重要性

影响一个ERP项目的因素有很多&#xff0c;数据无疑是其中很重要的一项,正所谓“正确的诊断源于准确的信息&#xff0c;准确的信息基于可靠的采集”&#xff0c;当我们抓住数据这个根基&#xff0c;大处着眼&#xff0c;小处着手的时候&#xff0c;我们距离ERP成功的日子就不会太…...

【RabbitMQ笔记06】消息队列RabbitMQ七种模式之Topics主题模式

这篇文章&#xff0c;主要介绍消息队列RabbitMQ七种模式之Topics主题模式。 目录 一、消息队列 1.1、主题模式&#xff08;Topics&#xff09; 1.2、案例代码 &#xff08;1&#xff09;引入依赖 &#xff08;2&#xff09;编写生产者 &#xff08;3&#xff09;编写消费…...

ChatGPT似乎有的时候并不能搞懂Java的动态分派,你懂了吗?

目录 碎碎念 ChatGPT 中出现的问题 那么正确答案应该是什么呢&#xff1f; 分派的相关知识点总结&#xff1a; 分派是什么&#xff1f; 静态分派与动态分派&#xff1a; Java语言是静态多分派&#xff0c;动态单分派的&#xff1b; 静态分派&#xff1a;静态重载多分派…...

【C++初阶】vector的模拟实现

大家好我是沐曦希&#x1f495; 文章目录一、前言二、无参构造&析构三、基础接口1.empty和clear2.size和capacity3.[]和iterator四、reserve和resize五、尾插尾删六、其他构造1.迭代器区间构造2.拷贝构造七、memcpy问题八、完整代码一、前言 在模拟实现容器时候&#xff0…...

微信小程序、小游戏的流量主一般可以赚多少钱?

本篇文章主要科普小程序、小游戏流量主一般赚钱的实际情况&#xff0c;通过在下长期运营的经验汇总而成。 日期&#xff1a;2023年2月26日 作者&#xff1a;任聪聪 小程序、小程序满1000用户后即可开通流量主&#xff0c;但实际上很多人并没有传说中的那种日赚几千的流量收入的…...

jni-Demo-基于linux(c++ java)

跑一个jni 的最简单的Demo需要提前准备 VsCode 编译器、win10下&#xff0c;vscode中集成linux操作系统、c编译器&#xff08;gcc、g&#xff09;&#xff0c;java编译器&#xff08;jdk1.8&#xff09;参考&#xff1a;https://mangocool.com/1653030123842.htmlJniDemo类&…...

指针的进阶——(1)

本次讲解重点&#xff1a; 1、字符指针 2、数组指针 3、指针数组 4、数组传参和指针传参 5、函数指针 关于指针这个知识点的主题&#xff0c;我们在前面已经初级阶段已经对指针有了大致的理解和应用了。我们知道了指针的概念&#xff1a; 1、指针就是地址&#xff0c;但口…...

电商平台的促销活动如何抵御大流量的ddos攻击

每一次活动大促带来的迅猛流量&#xff0c;对技术人而言都是一次严峻考验。如果在活动期间遭受黑产恶意 DDoS 攻击&#xff0c;无疑是雪上加霜。电商的特性是业务常态下通常不会遭受大流量 DDoS 攻击&#xff0c;且对延迟敏感&#xff0c;因此只需要在活动期间按需使用 DDoS 防…...

代码随想录-48-104. 二叉树的最大深度

目录前言题目1.层序迭代思路2. 本题思路分析&#xff1a;3. 算法实现4. pop函数的算法复杂度5. 算法坑点前言 在本科毕设结束后&#xff0c;我开始刷卡哥的“代码随想录”&#xff0c;每天一节。自己的总结笔记均会放在“算法刷题-代码随想录”该专栏下。 代码随想录此题链接 …...

【Vue3源码】第六章 computed的实现

【Vue3源码】第六章 computed的实现 上一章节我们实现了 ref 及其它配套的isRef、unRef 和 proxyRefs API。这一章开始实现computed计算属性。 认识computed 接受一个 getter 函数&#xff0c;返回一个只读的响应式 ref 对象。该 ref 通过 .value 暴露 getter 函数的返回值。…...

Java基础之注解

3.注解 3.1概述【理解】 概述 对我们的程序进行标注和解释 注解和注释的区别 注释: 给程序员看的注解: 给编译器看的 使用注解进行配置配置的优势 代码更加简洁,方便 3.2自定义注解【理解】 格式 public interface 注解名称 { ​ public 属性类型 属性名() default 默认值…...

三、线性表

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 自学JAVA数据结构笔记&#xff0c;跟学视频为&#xff1a;黑马程序员Java数据结构与java算法全套教程…...

wordpress主动提交百度/济南网络优化网站

今年9月10号华为开发者大会中&#xff0c;华为正式开源发布了鸿蒙os 2.0系统&#xff0c;鸿蒙终于开放给开发者&#xff0c;目前只能用来做指挥屏/手表/车机。华为手机版本的鸿蒙系统则要到今年的12月才提供。在9月10号我就去鸿蒙gitee上的开源代码库中参观&#xff0c;主要是看…...

商品列表html模板/珠海seo关键词排名

UDP时间更新服务程序 http://qzher.com/?p647 网络编程,最好采用两台电脑, 或者一台电脑,再开个虚拟机,虚拟机采用网络桥接模式 特点: 发消息方一直向指定IP发送报时消息 收方一上线就能得到发来的即时消息 (未上线的消息全被抛弃) 若收方上线期间, 发消息方关闭, 收方也一直…...

专业建设方案/seo网站诊断分析报告

switch case的进化历程&#x1f690;简介区别总结因为长情是古董&#xff0c;所以假货特别多 觉得太长可以直接看总结就可以了 简介 Switch case语句在Java中是一种流程控制结构&#xff0c;用于将一个值与一系列可能的情况进行比较&#xff0c;并根据匹配的情况执行相应的代…...

用新浪云做网站/百度竞价排名什么意思

小编典典将该文件放入资产中 。对于在Android Studio项目中创建的项目&#xff0c;您需要在主文件夹下创建资产文件夹。将该文件读取为&#xff1a;public String loadJSONFromAsset(Context context) {String json null;try {InputStream is context.getAssets().open("…...

上海做网站的公司有哪些/免费的电脑优化软件

上篇博客分析了当下游服务出故障&#xff0c;导致服务雪崩的情况&#xff0c;然后准备引入Sentinel组件来做容错。 Sentinel是什么&#xff1f; Sentinel (分布式系统的流量防卫兵) 是阿里开源的一套用于服务容错的综合性解决方案。它以流量 为切入点, 从流量控制、熔断降级、系…...

企业管理系统网站开发标书/青岛网站排名推广

前言&#xff1a; Servlet的作用: Servlet 是接口&#xff0c;是 JavaEE 规范之一。接口起到了规范的作用。Servlet 是 JavaWeb 三大组件之一。三大组件分别是:Servlet 程序、Filter 过滤器、Listener 监听器。Servlet 是运行在服务器上的一个 java 小程序&#xff0c;它可以接…...