当前位置:   article > 正文

Java实现将数据存储在文件中,并可读取和写入_java生成的数据存入文件

java生成的数据存入文件

Java实现将数据存储在文件中,并可读取和写入

为了实现数据的可保存性,通常会存储在硬盘中,所以我们需要一个文件为载体。

具体步骤如下:

  1. 创建一个文件对象,指定要读取的文件的路径。
  2. 创建一个 FileReader 对象,用于读取文件。
  3. 将 FileReader 对象传递给 BufferedReader 构造函数,创建一个缓冲输入流对象。
  4. 创建一个空的数组对象,用来存储从文件中读取出来的数据。
  5. 使用 while循环读取文件中的每一行数据,同时将数据存储到数组中。
  6. 关闭输入流。

文件的写入

public static void filladd() {
        String fileName = "goodsInfo";
        String regex = "^\\d+,\\d+\\.\\d{2},[a-zA-Z]+$\n";
        Scanner in =new Scanner(System.in);
        System.out.println("请以以下格式输入:序号,价格,名称(以,为分隔)");
        String goodInfo = in.nextLine();
        while (!goodInfo.matches(regex)) {
            System.out.println("格式错误!");
            System.out.println("序号,价格,名称(以,为分隔并且价格后面有两位小数)");
            System.out.print("请以以上格式输入:");
            goodInfo = in.nextLine();
        }
        goodInfo = goodInfo + "\n";  //
        try (FileOutputStream fos = new FileOutputStream(fileName, true)) {
            fos.write(goodInfo.getBytes());
            System.out.println("数据成功存储在文件中");
        } catch (IOException e){
            e.printStackTrace();
        }
        earPhone t3 = new earPhone();
        t3.earPhone();
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
文件内的内容
301,99.00,xg1
302,199.00,se1
303,1999.00,xm5
  • 1
  • 2
  • 3

文件的读取

public class earPhone extends Goods {    //耳机子类
    public void earPhone() {
        Goods good = new earPhone();
        goodsFill fi = () -> {
            String filePath = "goodsInfo"; // 文件名
            List<Goods> goodsList = new ArrayList<>();
            try (FileReader fileReader = new FileReader(filePath);
                 BufferedReader reader = new BufferedReader(fileReader)) {
                String line; // 存储文件每行数据的变量
                while ((line = reader.readLine()) != null) { // 读取每一行数据
                    String[] data = line.split(","); // 将每行数据按逗号分隔为字符串数组
                    int id = Integer.parseInt(data[0]);
                    double price = Double.parseDouble(data[1]);
                    String name = data[2];
                    goodsList.add(new Goods(id, price, name)); // 将数据存储到 ArrayList 中
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            Goods[] goods = goodsList.toArray(new Goods[goodsList.size()]); // 转换为数组
            return goods;
        };
        try {
            good.operate(fi.Fill());    //调用操作方法
        } catch (MyException e) {    // 捕获 MyException 异常,并输出异常信息
            e.printStackTrace();
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

在这段代码中,首先创建了一个 ArrayList对象,用于存储从文件中读取出来的商品对象。接着创建了文件输入流和缓冲输入流对象,用于读取文件中的数据。

在while 循环中,使用 readLine() 方法读取每一行数据,并将其按逗号分隔成字符串数组,然后将其中的元素转换为对应的类型(例如 Integer.parseInt() 可以将字符串转换为整型),最后将数据封装成 Goods 对象并添加到 ArrayList 中。

最后,使用 toArray() 方法将 ArrayList 转换为数组,然后将该数组返回。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号