一、导读
本文着重讲解java IO流如
FileWriter,FileReader....
二、案例分析
停车场有 进场 和出场的功能:
- 进场时:采用键盘录入的方式,录入汽车的
品牌、颜色、车牌号
,把品牌、颜色、车牌号,以及进场时间写入carInfo.txt
文件中。- 出场时:键盘录入车牌号,去文件中查找该车的进场时间,并计算停车时间。
30分钟
内免费,过后每小时5元,超过一小时按一小时计算。
直接上代码!
三、代码以运行结果
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
/**
* 案例要求:
* 停车场有进场和出场的功能:
* 1. 进场时:采用键盘录入的方式,录入汽车的品牌、颜色、车牌号,把品牌、颜色、车牌号,以及进场时间写入carInfo.txt文件中。
* 2. 出场时:键盘录入车牌号,去文件中查找该车的进场时间,并计算停车时间。
* 3. 30分钟内免费,过后每小时5元,超过一小时按一小时计算。
*
* @author JIaMing
* @since 2021/12/9/0009 下午 16:38
**/
public class Test01 {
//入场功能
public static void enter() throws IOException {
//从键盘获取汽车信息并写入文件CarInfo.txt
Scanner scanner = new Scanner(System.in);
ParkingLot parkingLot = new ParkingLot();
System.out.println("请输入你的汽车的品牌");
parkingLot.setBrand(scanner.nextLine());
System.out.println("请输入你的汽车的颜色");
parkingLot.setColor(scanner.nextLine());
System.out.println("请输入你的汽车的车牌号");
parkingLot.setNum(scanner.nextLine());
//获取系统时间
long now = System.currentTimeMillis();
parkingLot.setTime(now + "");
//写入文件
File file = new File("D:\\carInfo.txt");
//判断文件是否存在
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file, true);
StringBuilder sb = new StringBuilder();
sb.append(parkingLot.getBrand()).append(",").append(parkingLot.getColor()).append(",").append(parkingLot.getNum()).append(",").append(parkingLot.getTime()).append("\r\n");
String s1 = sb.toString();
fw.write(s1);
//一定要关闭流
fw.close();
System.out.println("写入文件成功");
}
//出场功能
public static void exit() throws IOException {
//当离开停车场时,输入车牌号,从文件中匹配车牌号,计算总共停车时间
File file = new File("D:\\carInfo.txt");
FileReader fr = new FileReader(file);
StringBuilder sb = new StringBuilder();
int len;
char[] arr = new char[1024];
//新建一个ArrayList
ArrayList<ParkingLot> list = new ArrayList<>();
while ((len = fr.read(arr)) != -1) {
sb.append(arr, 0, len);
}
//读出文件内容
System.out.println(sb);
//分割出每一行
String[] s = sb.toString().split("\r\n");
//遍历s
for (String ss : s) {
String[] split = ss.split(",");
ParkingLot parkingLot = new ParkingLot(split[0], split[1], split[2], split[3]);
list.add(parkingLot);
}
//与输入的车牌号对比
System.out.println("输入你的车牌号");
Scanner scanner = new Scanner(System.in);
String inputNum = scanner.nextLine();
String Time = "";
String nowTime = "";
//在CarInfo.txt中查找该车牌号的进场时间,计算总共停车时间
for (ParkingLot p : list) {
if (p.getNum().equals(inputNum)) {
nowTime = System.currentTimeMillis() + "";
Time = p.getTime();
}
}
long duration = (Long.parseLong(nowTime) - Long.parseLong(Time)) / 1000 / 60;
//调用方法,计算停车费
computeCost(duration);
fr.close();
}
//计算停车费
public static void computeCost(long time) {
if (time <= 30) {
System.out.println("30分钟以内免费!,您停车了" + time + "分钟");
} else if (time < 60) {
System.out.println("您停车了" + time + "分钟,不足一小时,大于30分钟,收费5元");
} else {
long count = time / 60 + 1;
System.out.println("超过一小时每小时5元收费:" + count * 5 + "元,您停车了" + time + "分钟");
}
}
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
for (; ; ) {
System.out.println("请输入进场还是出场,0退出");
String input = sc.nextLine();
switch (input) {
case "进场":
enter();
break;
case "出场":
exit();
break;
case "0":
System.exit(0);
default:
System.out.println("输入不正确!,请重新输入");
break;
}
}
}
}
运行结果: