java实验:使用适当的I/O流类,将电商平台中书籍信息和用户信息分别用文件进行存储

文章目录

前言

一、实验内容

二、实验思路

三、实验代码

四、实验结果截图

总结


前言

好像很久没写点东西了(

感觉io流还是有点麻烦的,不过似乎有一套固定的操作,顺着操作下来也八九不离十了


一、实验内容

(1)完成书籍信息的添加、查询功能(操作文件实现);

(2)完成用户信息的注册,登录功能(操作文件实现);

二、实验思路

用File类操作文件,将数据储存到文件中

 当我们创建对象时,只要需要,对象就会一直存在,但在程序终止的时候,无论如何它都不会继续存在。这么做有一定的意义,但是如果对象能够在程序不运行的情况下仍能存在并保存其信息,这样,在下次运行程序时,该对象将被重建并且拥有的信息与在程序上次运行时它所拥有的信息相同。为达到这目的,通常的做法可以写入文件或数据库,这样有其优点,但缺乏了某些便利性,在Java中,通过序列化技术,可以将对象声明为“持久性”的,为我们处理所有细节,显得十分方便。

  Java的对象序列化将那些实现了 Serializable 接口的对象转换成一个字节序列,并能够在以后将这个字节序列完全恢复为原来的对象,这一过程甚至可以通过网络进行,也意味着能自动弥补不同操作系统之间的差异,运行在 Windows 系统的计算机上创建一个对象并序列化,通过网络将其发送给一台运行 Unix 系统的计算机,不必担心数据在不同机器上表示不同从而在那里重新组装。

三、实验代码

如下:


//所有的代码都在一个chapter10包里,后续导包的时候要注意这一点import java.io.Serializable;public class User implements Serializable {//代表这个类是可序列化的private String id;private String name;private String password;private char sex;private String city;private String role;public User() {super();}public User(String id, String name, String password, char sex, String city) {super();this.id = id;this.name = name;this.password = password;this.sex = sex;this.city = city;}public User(String id, String name, String password, char sex, String city, String role) {super();this.id = id;this.name = name;this.password = password;this.sex = sex;this.city = city;this.role = role;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public char getSex() {return sex;}public void setSex(char sex) {this.sex = sex;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}public String getRole() {return role;}public void setRole(String role) {this.role = role;}@Overridepublic String toString() {return "用户标号:" + id + ", 用户名" + name + ",密码:" + password + ", 性别:" + sex + ", 城市:" + city;}
}import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;import chapter10.User;//将一个用户信息写入到user.txt文件进行持久化储存
//第一个版本:使用字节流将User类保存至文本
public class TestByteStream {public static void main(String[] args) throws IOException {//准备要写入的数据User u1 = new User("u004", "孙乔", "111", '女', "太原");User u2 = new User("u005", "孙小乔", "222", '女', "太原");User u3 = new User("u006", "孙大乔", "333", '女', "太原");//1、创建文件对象File file = new File("D:\\idea\\code\\chapter10\\src\\chapter10\\User1");//2、创建字节输入流对象OutputStream os = new FileOutputStream(file );//3、调用写入的方法os.write(u1.toString().getBytes());os.write("\r\n".getBytes());os.write(u2.toString().getBytes());os.write("\r\n".getBytes());os.write(u3.toString().getBytes());os.write("\r\n".getBytes());//4、关闭流os.close();//要求将文件的数据读取出来,在控制台打印输出//1、创建字节输出流对象InputStream is = new FileInputStream(file);//2、调用读的方法byte[] b = new byte[300];is.read(b);System.out.println(new String(b));//3、关闭流is.close();}}import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;//第三个版本,使用缓冲流将User类保存至文本
public class TestBufferedStream {public static void main(String[] args) throws IOException {//准备要写的内容User u1=new User("u001","张尺寸","001",'男',"百京");User u2=new User("u010","张尺寸","001",'男',"百京");User u3=new User("u011","张尺寸","001",'男',"百京");//创建文件对象File file = new File("D:\\idea\\code\\chapter10\\src\\chapter10\\User2");//创建字符输出流对象(造细管)FileWriter fw=new FileWriter(file);//创建缓冲输出流对象(造粗管)BufferedWriter bw=new BufferedWriter(fw);//调用写方法,将用户信息写入文件bw.write(u1.toString());bw.newLine();bw.write(u2.toString());bw.newLine();bw.write(u3.toString());bw.newLine();//关闭流bw.close();fw.close();}
}//在下面两个版本中,处理后的数据不是文数据import java.io.*;
import java.util.Arrays;import chapter10.User;//第四个版本:使用对象流将User类保存至文本
public class TestObjectStream {public static void main(String[] args) throws IOException, ClassNotFoundException {// TODO Auto-generated method stub//准备数据User u1 = new User("u001", "王雅", "000", '女', "运城");User u2 = new User("u002", "李亚淇", "111", '女', "临汾");User u3 = new User("u003", "豆豆", "222", '女', "大同");//创建文件对象File file = new File("D:\\idea\\code\\chapter10\\src\\chapter10\\user3");//创建字节输出流对象(细管)OutputStream os = new FileOutputStream(file);//创建对象输出流对象(粗管)ObjectOutputStream oos = new ObjectOutputStream(os);//调用写的方法oos.writeObject(u1);oos.writeObject(u2);oos.writeObject(u3);//对Java对象进行序列化处理,处理后的数据不是文本数据,所以把数据保存到文本文档中后打开是乱码//关闭流oos.close();os.close();//读文件InputStream is = new FileInputStream(file);ObjectInputStream ois = new ObjectInputStream(is);u1 =(User)ois.readObject();u2 =(User)ois.readObject();u3 =(User)ois.readObject();System.out.println(u1);System.out.println(u2);System.out.println(u3);ois.close();is.close();}}import java.io.*;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;import chapter10.User;//第五个版本:结合集合框架使用对象流将User类保存至文本
//1、需要把若干用户对象,保存到集合中
//2、把集合序列化
//3、反序列化读取时,只需要读取一次,转换为集合类型
//4、遍历集合,打印输出所有用户信息
public class TestObjectStreamUsingCollection {public static void main(String[] args) throws IOException, ClassNotFoundException {User u1 = new User("u001", "王雅", "000", '女', "运城");User u2 = new User("u002", "李亚淇", "111", '女', "临汾");User u3 = new User("u003", "豆豆", "222", '女', "大同");Set<User> users = new HashSet<User>();users.add(u1);users.add(u2);users.add(u3);File file = new File("D:\\idea\\code\\chapter10\\src\\chapter10\\user4");OutputStream os = new FileOutputStream(file);ObjectOutputStream oos = new ObjectOutputStream(os);oos.writeObject(users);oos.close();os.close();InputStream is = new FileInputStream(file);ObjectInputStream ois = new ObjectInputStream(is);HashSet<User> hs = (HashSet<User>)ois.readObject();Iterator it = hs.iterator();while(it.hasNext()) {System.out.println(it.next());}ois.close();is.close();}}import java.io.File;
public class TestFileDemo {public static void main(String[] args) {//构造方法//第一种构造方法:根据字符串形成的路径获取File对象  File(String path);File f1 = new File("D:\\javacode\\1.txt");  //将文件包装成file对象File f2 = new File("D:\\javacode");  //将文件夹包装成file对象//第二种构造方法:根据字符串形式的父目录及子目录创建file对象File f3 = new File("D:\\idea\\chapter10\\src\\chapter10", "luyunchi.txt");//第三种构造方法:根据父目录对象以及字符串形式的子目录来获取File对象File f4 = new File("D:\\javacode");File f5 = new File(f4, "filedemo.txt");System.out.println(f1.exists());System.out.println(f3.exists());System.out.println(f5.isFile());}}

四、实验结果截图

 


总结

以上就是关于io流储存信息的内容了,可以添加上之前的界面变成一个合适的登录界面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/54829.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

名帖316 沈尹默 行书《澹静庐诗剩》及《景宁杂诗》

《中国书法名帖目录》 沈尹默&#xff0c;原名君默&#xff0c;祖籍浙江湖州人&#xff0c;1883年生于陕西兴安府汉阴厅(今陕西安康市汉阴县城关镇民主街)早年留学日本&#xff0c;后任北京大学教授和校长、辅仁大学教授。1949年后历任中央文史馆副馆长&#xff0c;上海市人民…

如何使用OpenAI的whisper

文章目录 一、安装ffmpeg二、安装torch等相关组件三、安装Whisper四、下载模型五、测试效果六、cpu与gpu解码的耗时对比参考文献 一、安装ffmpeg yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm yum install ff…

全覆盖路径规划——ccpp

在路径规划方法中&#xff0c;有一种是点到点的路径规划&#xff0c;这一类例如dijstra&#xff0c;或者A*这类算法&#xff0c;关注的是点到点的最短路径&#xff0c;偏向一种最优的选择。还有一种是全覆盖是路径规划&#xff0c;这一类路径规划关注的是遍历整个地图&#xff…

2021高考仙桃中学成绩查询,仙桃2020高考最高分出炉!汇总仙桃各大中学喜报

高考结束&#xff0c; 已经放榜&#xff0c; 不论结果如何&#xff0c;至少曾经放手一搏过&#xff01; 我们来看看仙桃这些高中&#xff0c; 今年的喜报吧&#xff01; 仙桃一中喜报&#xff1a;全市文科最高分 文科刘佳琪652分&#xff0c; 全市文科最高分&#xff0c; 稳居湖…

免费创造你的专属数字人!

现在数字人已经不是什么新鲜事物啦&#xff0c;所谓数字人&#xff08;Digital Human / Meta Human&#xff09;&#xff0c;是运用数字技术创造出来的、与人类形象接近的数字化人物形象。未来数字人ChatGPT可以取代很多现在很多的一些应用场景&#xff0c;例如客服、主播等。以…

运营人常备的8个营销模型一、SWOT分析二、PEST分析三、3C

运营人常备的8个营销模型 一、SWOT分析 二、PEST分析 三、3C战略模型 四、STP理论 五、波特五力模型 六、波士顿矩阵 七、GE矩阵 八、商业模式画布 内容如下&#xff1a; 一、SWOT分析 1.strengths是优势 2.weaknesses是劣势 3.opportunities是机会 4.threats是威胁 二、PEST分…

286 亿元!败了的 Google 是否会为 Android 交最贵罚单?

聚光灯下的 Google&#xff0c;再一次“失利”。 整理 | 苏宓 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 屈指算来&#xff0c;Google 遭到欧盟反垄断调查已有 12 年时间。在此多年间&#xff0c;调查主要是围绕 Google 的搜索引擎、Android、AdWords&#x…

微软正式将GPT-4引入网络安全,安全行业颠覆似乎来了

北京时间3月28日23:30&#xff0c;微软安全开启全球直播&#xff0c;重磅推出Microsoft Security Copilot——正式宣布将GPT-4引入网络安全。 据微软称&#xff0c;Security Copilot将不断学习和改进&#xff0c;提供对最先进的OpenAI模型的持续访问&#xff0c;以支持要求苛刻…

腾讯云数据安全中台保护方案获“首届全国商用密码应用优秀案例”

近日&#xff0c;工业和信息化部密码应用研究中心发起的“首届全国商用密码应用优秀案例”评选活动正式结束&#xff0c;腾讯云数据安全中台保护方案凭借优异技术和实践表现获评优秀案例。 &#xff08;首届全国商用密码应用优秀案例名单) 本次优秀案例征集涵盖电子政务、信息…

阿里贾扬清:新一轮AI爆发的推动机制是工程化和开源 | MEET2023

羿阁 整理自 MEET2023量子位 | 公众号 QbitAI 随着Stable Diffusion、ChatGPT的爆火&#xff0c;AI在今年迎来了大爆发。 这不禁让人想问&#xff0c;这些创新背后的推动机制究竟是什么&#xff1f; 在MEET2023智能未来大会上&#xff0c;阿里巴巴集团副总裁、阿里云计算平台事…

教你在Android手机上使用全局代理!

FBI Warning&#xff1a;欢迎转载&#xff0c;但请标明出处&#xff1a;http://blog.csdn.net/codezjx/article/details/8872071&#xff0c;未经本人同意请勿用于商业用途&#xff0c;感谢支持&#xff01; 前言&#xff1a;在Android上使用系统自带的代理&#xff0c;限制灰常…

这才是计算机科学_人工智能

人工智能 一、前言二、ML2.1 分类2.1.1 决策树2.2.2 支持向量机2.2.3 人工神经网络 三、计算机视觉3.1 Prewitt算子3.2 Viola-Jones 人脸检测算法3.3 卷积神经网络 四、自然语言处理4.1 知识图谱4.2 语音识别 一、前言 之前讲了计算机从发展到现在的过程&#xff0c;计算机很适…

【ChatGPT】《chatGPT Box现已全平台上线,全面整合并以MIT协议开源》- 知识点目录

《chatGPT Box现已全平台上线&#xff0c;全面整合并以MIT协议开源》 这个视频主要介绍的是一款基于ChatGPT的开源工具【ChatGPT Box】&#xff1b; ChatGPTBox插件在chrome应用商店已经上线&#xff1b; 1. 右键菜单呼出对话框 & 位置可以拖拽调整 2. 文字选中问答 2.1 …

Stable Diffusion 母公司开源大语言模型,代号「StableLM」!

公众号关注 “GitHubDaily” 设为 “星标”&#xff0c;每天带你逛 GitHub&#xff01; 昨天晚上 11 点&#xff0c;Stable Diffusion 的母公司 Stability AI 重磅宣布&#xff0c;正式开源一款全新的大语言模型&#xff1a;StableLM。 该模型的 Alpha 版本有 30 亿和 70 亿参数…

Stable Diffusion 母公司开源大语言模型StableLM

4月19号晚上 11 点&#xff0c;Stable Diffusion 的母公司 Stability AI 重磅宣布&#xff0c;正式开源一款全新的大语言模型&#xff1a;StableLM。 该模型的 Alpha 版本有 30 亿和 70 亿参数&#xff0c;并将于后续开放 150 亿和 650 亿的参数模型。 Stability AI 的创始人…

科研人论文必备神器(软件、网站、插件等)

科研人论文必备神器&#xff08;软件、网站、插件等&#xff09; 仅真实地推荐高效、有用的内容&#xff0c;无广告 文章目录 科研人论文必备神器&#xff08;软件、网站、插件等&#xff09;文献查找1.谷歌学术2.Web of Science&#xff08;WOS&#xff09;3.PubMed4.知网5.百…

2023年3月份报告合辑 附下载

把坚持当成一种习惯&#xff0c;别人光鲜的背后都有加倍的付出。没有谁比谁更容易&#xff0c;只有谁比谁更努力&#xff0c;三月已经成了过去&#xff0c;四月继续加油&#xff01; 十二月报告 3.1&#xff1a;2023智慧会议技术白皮书 2023智慧会议技术白皮书 产业分析&#x…

java利用jdbc连接近远程MySQL数据库详细步骤+数据库封装类 --菜鸟小回

java利用jdbc连接近程MySQL数据库详细步骤数据库封装类 ChatGPT点击直接对话&#xff1a;小回公益GPT 文章目录 java利用jdbc连接近程MySQL数据库详细步骤数据库封装类 ChatGPT点击直接对话&#xff1a;[小回公益GPT](https://gpt.huijia.cf/)一、导入驱动包二、连接数据库1. 加…

国内信息安全行业常见法律法规介绍及个人理解

国内信息安全行业常见法律法规介绍及个人理解 前言网络安全法等保分保数据安全法 前言 法律法规&#xff0c;尤其是上位法(相对)是咬文嚼字、晦涩难懂的&#xff0c;常常阅读过后无法得到清晰、明确的理解。 但作为IT从业人员&#xff0c;无论是乙方争取项目机会、实施或设计过…

语音识别综述

语音识别的基本单位 Phoneme&#xff1a; 音位&#xff0c;音素 a unit of sound 是声音的最基本单位**&#xff0c;每个词语token的声音由多个 phoneme 组成** Grapheme&#xff08;字位&#xff09; smallest unot of a writing system 每个单词书写最基本的单位&#xff…