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
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;
|
|
}
|
|
} |