使用IO流将数据写入/读出文件(File)

目录

  • 第一章、功能需求和分析
    • 1.1)具体需求
    • 1.2)分析需求转为小的问题
        • ①数据从哪里来,有没有具体示例?
        • ②原来文件中有没有数据,写入数据有什么要求
        • ③读取文件数据要求
  • 第二章、解决方案
    • 2.1)使用IO流将数据写入文件
    • 2.2)使用IO流读取文件数据

友情提醒:

先看文章目录,大致了解文章知识点结构,点击文章目录可直接跳转到文章指定位置。有用记得关注

第一章、功能需求和分析

1.1)具体需求

将List中的数据写入到文件中

1.2)分析需求转为小的问题

①数据从哪里来,有没有具体示例?

回答:没有示例,随便造点假数据

②原来文件中有没有数据,写入数据有什么要求

回答:原来文件中没有数据,要求写入数据时每一个list中的数据为一行

③读取文件数据要求

回答:读取后存入list

第二章、解决方案

2.1)使用IO流将数据写入文件

package com.test.springboot.test;


import org.springframework.stereotype.Component;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

@Component
public class WriteFileTest {
    public static List<String> hisDataList = new ArrayList<>();

    public static void main(String[] args) {
        //创建文件
        File file = createFile();
        //写入数据到文件
        writeFile(file);
        //判断hisDataList数据是否包含
        System.out.println(hisDataList.contains("111-222-333"));
    }

    // 将newDataList中数据写入文件的方法
    public static void writeFile(File file) {
        List<String> newDataList = new ArrayList<>();
        newDataList.add("111-222-333");
        newDataList.add("333-555-555");
        hisDataList.addAll(newDataList);
        System.out.println("hisDataList" + hisDataList);

        try (
//OutputStreamWriter对象将字符转换为字节流,指定了文件输出流和编码方式。
                OutputStreamWriter outputStreamWriter =
                        new OutputStreamWriter(new FileOutputStream(file, true), "UTF-8");

//BufferedWriter对象,用于缓冲写入数据,提高写入效率。
                BufferedWriter bw = new BufferedWriter(outputStreamWriter)
        ) {
            //写入数据的逻辑,每一个list数据,为一行
            for (String str : newDataList) {
                bw.write(str);
                bw.newLine();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //创建文件
    public static File createFile() {
        try {
            //创建历史数据文件
            File file = new File("F:\\workspace\\SpringBootTest\\001-test\\target"
                    + File.separator + "temp_history.data");
            if (!file.exists()) {
                file.createNewFile();
            }
            return file;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

}

2.2)使用IO流读取文件数据

package com.test.springboot.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class ReadFileTest {
    public static List<String> flieDataList = new ArrayList<>();

    public static void main(String[] args) {
        //获取文件
        File tempFile=getFile();
        //读取文件内容,并存如list
        readData(tempFile, "UTF-8");
        //查看flieDataList数据
        System.out.println(flieDataList);
    }
    public static File getFile() {
        //返回一个新的File对象,调用这个方法不会创建新文件,File.separator表示插入文件分隔符
        return new File("F:\\workspace\\SpringBootTest\\001-test\\target"
                + File.separator + "temp_history.data");
    }
//读取文件中的数据,并存入flieDataList
    public static void readData(File file, String encoding) {
        if (!file.exists()) {
            return;
        }
        try (
                InputStreamReader read = new InputStreamReader(new FileInputStream(file), encoding);
                BufferedReader bufferedReader = new BufferedReader(read)
        ) {
            String lineText;
            while ((lineText = bufferedReader.readLine()) != null) {
                flieDataList.add(lineText);
            }
            System.out.println(flieDataList);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

你可能感兴趣的:(开发中遇到的一些需求,Java基础知识汇总,java,开发语言)