目录
友情提醒:
先看文章目录,大致了解文章知识点结构,点击文章目录可直接跳转到文章指定位置。有用记得关注
第一章、功能需求和分析
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();
}
}
}