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.

57 lines
1.9 KiB

// FileManager.java
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
public class FileManager {
public static final String ROOT_PATH = "./试卷/";
public void savePaper(User user, List<String> questions) throws IOException {
String userDirectory = ROOT_PATH + user.getUsername();
Path userPath = Paths.get(userDirectory);
if (!Files.exists(userPath)) {
Files.createDirectories(userPath);
}
String fileName = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd-HH-mm-ss")) + ".txt";
Path filePath = userPath.resolve(fileName);
try (PrintWriter writer = new PrintWriter(new FileWriter(filePath.toFile(), StandardCharsets.UTF_8))) {
for (int index = 0; index < questions.size(); index++) {
writer.printf("%d. %s%n%n", index + 1, questions.get(index));
}
}
}
public boolean checkQuestion(String question, User user) throws IOException {
String userDirectory = ROOT_PATH + user.getUsername();
Path userPath = Paths.get(userDirectory);
if (!Files.exists(userPath)) {
return true;
} else {
File directory = new File("./试卷/" + user.getUsername());
File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
for (String line : Files.readAllLines(file.toPath())) {
if (!line.isEmpty()) {
line = line.replaceFirst("^\\d+\\.\\s*", "");
if (line.equals(question)) {
System.out.println("有道一样的题");
return false;
}
}
}
}
}
}
return true;
}
}