我想在主类程序结束的时候 将新的数据覆盖到txt文件,求写法
//这是txt的读取方法
public static List<IO> readIO(String path){
List<IO> list=new ArrayList<>();
try {
BufferedReader fileBuffer = new BufferedReader(new FileReader(path));
fileBuffer=new BufferedReader(new InputStreamReader(new FileInputStream("C:\\Users\\ASUS\\Desktop\\大作业\\IO.txt"),"UTF-8"));
String date=null;
String d="\t";
while ((date = fileBuffer.readLine()) != null) {// 读取文件一行信息
IO h = new IO();
StringTokenizer dealDate = new StringTokenizer(date,d);// 教师的信息是\t逗号隔开的
//Exam
Exam exam=new Exam(dealDate.nextToken(),dealDate.nextToken(),dealDate.nextToken());
h.exam=exam;
//学生
String[] split = dealDate.nextToken().split(",");
for(String s:split){
String[] s1 = s.split(":");
User user=new User(s1[0],s1[1]);
h.SID.add(user);
}
//老师
String[] split2 = dealDate.nextToken().split(",");
for(String s:split2){
String[] s1 = s.split(":");
User user=new User(s1[0],s1[1]);
h.TID.add(user);
}
list.add(h);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
public static void writeIO(String path,IO io,boolean isAppend){
BufferedWriter out = null;
try {
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(path), isAppend)));
//写入exam信息
out.newLine();
out.write(io.exam.subject+"\t"+io.exam.time+"\t"+io.exam.room+"\t");
//写入学生信息
List<User> sid = io.SID;
int slen = sid.size();
for(int i=0;i<slen-1;i++){
out.write(sid.get(i).ID+":"+sid.get(i).name+",");
}
out.write(sid.get(slen-1).ID+":"+sid.get(slen-1).name+"\t");
//写入老师信息
List<User> tid = io.TID;
int tlen = tid.size();
for(int i=0;i<tlen-1;i++){
out.write(tid.get(i).ID+":"+tid.get(i).name+",");
}
out.write(tid.get(tlen-1).ID+":"+tid.get(tlen-1).name);
out.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
可以借助 FileOutputStream OutputStreamWriter BufferedWriter 来写入文件
代码参考:
public static void write(String path, List<IO> list){
try ( BufferedWriter writer =new BufferedWriter(new OutputStreamWriter(new FileOutputStream("C:\\Users\\ASUS\\Desktop\\大作业\\IO.txt"),"UTF-8"))){
for (IO io : list) {
// 这里只是示例,可以自行定义存放内容
writer.write(io.toString());
writer.newLine();
writer.flush();
}
} catch (Exception e) {
e.printStackTrace();
}
}