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;        }        List
listCar = 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
上一篇:Java~二叉树的前序遍历、中序遍历、后序遍历(分别用递归和迭代实现)附代码讲解
下一篇:今日OJ练习题写的感觉比较成功的俩道题~二维网络迁移和找小镇法官

发表评论

最新留言

关注你微信了!
[***.104.42.241]2025年04月12日 04时43分13秒