栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA基础(1)--I/O流--基于图书管理系统的使用分析(1)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA基础(1)--I/O流--基于图书管理系统的使用分析(1)

看完了I/O流的核心知识,我们需要关心的是:

I/O流到底怎么写啊????

【案例一】:在 "D:\JAVA\书籍信息.txt" 绝对路径下,有一个书籍信息.txt,里面有一种书的信息,请写一个AddBook 类,实现对文本的改写功能,增加一个新的书种。

前置:

import java.io.*;

import java.util.IOException;  (关于异常处理还有别的情况,下面会再补充)

import java.util.Scanner;  

第一步:

在class AddBook中,写一个addbook(),抛出异常值,即:

public void addbook() throws IOException{}

第二步:(★)

声明File类对象------提示查询重名书种-----输入书名-----建立 "文件输入流"---读取文件输入流内容

我们需要把这个.txt文件从硬盘导入内存,首先需要创建一个File对象,然后建立FileInputStream对象,然后传过来了需要读取啊,即建立BufferedReader对象,这样,源有了,桥梁也有了,读取器也有了。Perfect !(如我画的图一)

因为BufferedReader是InputReader的子类,所以我们新建的FileInputStream对象input应该再

由InputStreamReader到BufferedReader.

 

图一:基本结构

代码实现:

File file= new File("D:\JAVA\书籍信息.txt");
FileInputStream input= new FileInputStream(file);
BufferedReader reader=new BufferedReader(new InputStreamReader(input));

第二步完成了! 是不是很刺激?

第三步:(★) 比较书籍名称是否相同

【知识点:】 BufferedReader 的reader有readLine()方法,读取一整行的内容,即    reader.readLine()

注意: 我们的read是按行,一行一行来的,所以我们需要多次循环(while),实现一行一行读取完到最后一行.

拿什么和它比较呢?因为涉及循环的内容,所以我们需要集合(列表)

【知识点:】 List list =new ArrayList<>();  这里List是父类,做接口,ArrayList是子类,实现不同功能  。父类为接口,规定使用的方法;子类为各种不同的具体实现,根据实际需求选用不同的实现。ArrayList的对象是String类型的,可以用来和下面的tempString比较

还有: ArrayList是大小可以动态变化的数组,且是有序的

我们考虑的是临时String类变量,即 tempString,把它加到一个集合(列表)ArrayList的对象list的后面,如果

    while((tempString=reader.readLine())!=null) 跳出,那么说明行读取完,即全部写入tempString

    { list.add(tempString);}   

因为reader.readLine()是分行读入的,所以用tempString保存,之后追加到list后面

我们知道列表肯定不能与bookName(string)能进行什么,我们需要另一个String[] book_ name,

做到与bookname的元素比较,

String[] book_name = new String[8]

然后遍历for(string user: list),把含","分隔的文本写入book_name

之后书名比较, if(bookName.equals(book_name[0]),

那么把之前的boolean  flag=false改成true

判断名称后,当flag为false时,可以添加书籍

即:if(flag=false){

System.out.println("请输入作者:");

String author =sc.next();

System.out.println("请输入书籍价格:");

price = sc.nextDouble();

System.out.println("请输入书籍类型:");

String category = sc.next();

            System.out.println("请输入书籍的出版社:");

            String press = sc.next();

            String state = "false";

            String borrowName = "无";

            String borrowTime = "null";

创建书,那必定要new (这是个很重要的思想)

Book book = new Book (bookName, author, price, category, press, state, borrowName, borrowTime);   //构造

最最关键的地方来了!我们怎么把这个内容新写入一个文件?我们的书籍 ext.

先用file的.creatNewFile()方法,然后建立Filewriter类的fw,后面new的格式为new FileWriter(file, true);注意这里的(file,true)是一种重载方式,使得内容不会覆盖之前而追加至后面,而这还

没真正实现,还要用file的write方法去拼接String,即fw.write(book.toString());后面有每段换行的要求,fw.write(System.getProperty("line.separator"));//在段落后添加一个换行符

只有当流关闭后,我们的文本才会写入你文本,所以 fw.close();

至此,我们的添加书就完成了!

函数编写总结

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/859476.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号