
Java~IO输入输出流练习题~车库管理(停车、离开、查找、显示车库车辆信息)
发布日期:2021-05-07 13:55:45
浏览次数:18
分类:精选文章
本文共 5946 字,大约阅读时间需要 19 分钟。
IO流是Java程序中处理数据输入输出的核心机制,主要用于文件操作。根据数据类型的不同,可以分为字节流和字符流;根据数据流向的不同,又分为输入流和输出流。程序通过输入流读取数据,输出流写入数据进行处理。Java的IO包中,字节流由InputStream和OutputStream类表示,字符流由Reader和Writer类表示。具体分类可参考下图。
字节流
在JDK中,InputStream和OutputStream是字节流的顶级父类,所有字节输入流都继承自InputStream,所有字节输出流都继承自OutputStream。这些类用于读写文件时操作的字节数据。
字符流
对于处理字符数据,直接使用InputStream和OutputStream不太方便,JDK提供了字符流。字符流的顶级父类是Reader和Writer。Reader用于从文件或其他设备读取字符,Writer用于向目标设备写入字符。字符流更适合处理文本文件。
File类
File类用于操作文件和目录,提供了路径管理和文件操作的方法。常用方法包括文件存在性检查、创建、删除等。以下是File类的常用方法示例:
bool exists()
: 判断文件或目录是否存在。void createDir()
: 创建目录。void delete()
: 删除文件或目录。
代码示例
以下是管理车库的Java代码示例,展示了文件操作的实际应用:
import java.io.*;import java.util.ArrayList;import java.util.Arrays;import java.util.List;class Car { public String carNum; public String carBrand; public String carModel; public Car(String carNum, String carBrand, String carModel) { this.carNum = carNum; this.carBrand = carBrand; this.carModel = carModel; } @Override public String toString() { return carNum + "," + carBrand + "," + carModel; }}class ManagePark { public Boolean findCarByCarNum(Car car) throws IOException { if(car == null) { return false; } FileReader fileReader = new FileReader("e:\\MyCarPark.txt"); BufferedReader bufferedReader = new BufferedReader(fileReader); String findCar = bufferedReader.readLine(); while (findCar != null) { String[] strings = findCar.split(","); if(strings[0].equals(car.carNum)) { return true; } findCar = bufferedReader.readLine(); } bufferedReader.close(); fileReader.close(); return false; } public void stopAtPark(Car car) throws IOException { if(car == null) { return; } if(findCarByCarNum(car)) { return; } FileWriter fileWriter = new FileWriter("e:\\MyCarPark.txt", true); BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); String carString = car.toString(); bufferedWriter.newLine(); bufferedWriter.write(carString); bufferedWriter.close(); fileWriter.close(); } public void LeavePark(Car car) throws IOException { if(!findCarByCarNum(car)) { return; } ListlistCar = new LinkedList<>(); FileReader fileReader = new FileReader("e:\\MyCarPark.txt"); BufferedReader bufferedReader = new BufferedReader(fileReader); String findCar = bufferedReader.readLine(); while (findCar != null) { String[] strings = findCar.split(","); if(strings.length > 1) { if(!strings[0].equals(car.carNum)) { listCar.add(new Car(strings[0], strings[1], strings[2])); } } findCar = bufferedReader.readLine(); } bufferedReader.close(); fileReader.close(); FileWriter fileWriter = new FileWriter("e:\\MyCarPark.txt"); BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); for(Car c : listCar) { String sCar = c.toString(); bufferedWriter.newLine(); bufferedWriter.write(sCar); } bufferedWriter.close(); fileWriter.close(); } public Car[] getCarByBrand(String brand) throws IOException { ArrayList carList = new ArrayList<>(); FileReader fileReader = new FileReader("e:\\MyCarPark.txt"); BufferedReader bufferedReader = new BufferedReader(fileReader); String findCar = bufferedReader.readLine(); while (findCar != null) { String[] strings = findCar.split(","); if(strings.length > 1) { if(strings[1].equals(brand)) { carList.add(new Car(strings[0], strings[1], strings[2])); } } findCar = bufferedReader.readLine(); } bufferedReader.close(); fileReader.close(); return carList.toArray(new Car[0]); } public void displayMyParkCar() throws IOException { FileReader fileReader = new FileReader("e:\\MyCarPark.txt"); BufferedReader bufferedReader = new BufferedReader(fileReader); String findCar = bufferedReader.readLine(); while (findCar != null) { System.out.println(findCar); findCar = bufferedReader.readLine(); } System.out.println(); bufferedReader.close(); fileReader.close(); }}public class MyCarParkTest { public static void main(String[] args) throws IOException { try { Car car = new Car("陕A33333", "宝马", "宝马X6"); Car car1 = new Car("陕A66666", "奔驰", "黑色G500"); ManagePark managePark = new ManagePark(); System.out.println("===初始车库==="); managePark.displayMyParkCar(); System.out.println("===找是否有陕A33333==="); System.out.println(managePark.findCarByCarNum(car)); System.out.println("===找是否有陕A66666==="); System.out.println(managePark.findCarByCarNum(car1)); System.out.println("===找车库中所有劳斯莱斯的车==="); Car[] cars = managePark.getCarByBrand("劳斯莱斯"); System.out.println(Arrays.toString(cars)); System.out.println(); System.out.println("===陕A66666离开车库陕A33333进入车库==="); managePark.LeavePark(car1); managePark.stopAtPark(car); System.out.println("===最终车库==="); managePark.displayMyParkCar(); } catch (IOException e) { e.getStackTrace(); } }}
运行结果
===初始车库===陕A66666,奔驰,黑色G500陕A88888,劳斯莱斯,劳斯莱斯幻影陕A00000,迈巴赫,迈巴赫62陕A11111,保时捷,保时捷911陕A99999,劳斯莱斯,劳斯莱斯古斯特===找是否有陕A33333===false===找是否有陕A66666===true===找车库中所有劳斯莱斯的车===[陕A88888,劳斯莱斯,劳斯莱斯幻影, 陕A99999,劳斯莱斯,劳斯莱斯古斯特]===陕A66666离开车库陕A33333进入车库===———===最终车库===陕A88888,劳斯莱斯,劳斯莱斯幻影陕A00000,迈巴赫,迈巴赫62陕A11111,保时捷,保时捷911陕A99999,劳斯莱斯,劳斯莱斯古斯特陕A33333,宝马,宝马X6
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月12日 04时43分13秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【故障公告】升级阿里云 RDS SQL Server 实例故障经过
2019-03-06
蹒跚来迟:新版博客后台上线公测
2019-03-06
[网站公告]11月26日00:00-04:00阿里云RDS升级
2019-03-06
[网站公告]又拍云API故障造成图片无法上传(已恢复)
2019-03-06
云计算之路-阿里云上:“黑色30秒”走了,“黑色1秒”来了,真相也许大白了
2019-03-06
云计算之路-阿里云上:2014年6月12日12点IIS请求到达量突降
2019-03-06
上周热点回顾(6.9-6.15)
2019-03-06
上周热点回顾(10.20-10.26)
2019-03-06
上周热点回顾(2.16-2.22)
2019-03-06
上周热点回顾(3.2-3.8)
2019-03-06
.NET跨平台之旅:借助ASP.NET 5 Beta5的新特性显示CLR与操作系统信息
2019-03-06
上周热点回顾(7.27-8.2)
2019-03-06
上周热点回顾(9.28-10.4)
2019-03-06
上周热点回顾(5.2-5.8)
2019-03-06
上周热点回顾(5.9-5.15)
2019-03-06
.NET跨平台之旅:将示例站点升级至 .NET Core 1.1 Preview 1
2019-03-06
上周热点回顾(1.16-1.22)
2019-03-06
上周热点回顾(1.23-1.29)
2019-03-06
上周热点回顾(3.20-3.26)
2019-03-06
上周热点回顾(4.24-4.30)
2019-03-06