You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
2.4 KiB

package Deal;
import Base.Question;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
public class Deal_file {
private static final String BASE_DIR="试卷/";
public Deal_file() {
File baseDir = new File(BASE_DIR);
if (!baseDir.exists()) {
if (!baseDir.mkdirs())
System.out.println("目录创建失败!");
}
}
public void savePaper(ArrayList<Question> paper, String username) {
String userDirPath = BASE_DIR + username + "/";
File userDir = new File(userDirPath);
if (!userDir.exists()) {
if (!userDir.mkdirs()) {
System.out.println("目录创建失败!");
return;
}
}
String timestamp = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date());
String filePath = userDirPath + timestamp + ".txt";
try (PrintWriter writer = new PrintWriter(new FileWriter(filePath))) {
for (int i = 0; i < paper.size(); i++) {
writer.println(paper.get(i).toString());
if (i < paper.size() - 1) {
writer.println();
}
}
System.out.println("试卷已保存至: " + new File(filePath).getAbsolutePath());
} catch (IOException e) {
System.out.println("保存文件出错: " + e.getMessage());
}
}
public Set<String> Check_Existing(String username) {
Set<String> questions = new HashSet<>();
String userDirPath = BASE_DIR + username + "/";
File userDir = new File(userDirPath);
if (!userDir.exists() || !userDir.isDirectory()) {
return questions;
}
File[] files = userDir.listFiles();
if (files == null) {
return questions;
}
for (File file : files) {
if (file.isFile() && file.getName().endsWith(".txt")) {
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
String line;
while ((line = reader.readLine()) != null) {
if (!line.trim().isEmpty()) {
questions.add(line.trim());
}
}
} catch (IOException e) {
return questions;
}
}
}
return questions;
}
}