/
Yuriy_Bondarev
/
TestOFC
Обзор
Документация
Войти
/
Yuriy_Bondarev
/
TestOFC
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
src/main/java/cores/FileHandler.java
79 строк
3 KB
Yuriy Bondarev
first_commit
06 июл 2026, 16:01
06 июл 2026, 16:01
fb5552d
Код
Авторство
О чём код?
package cores; import interfaces.Analizable; import interfaces.Message; import models.Question; import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.*; public class FileHandler { static String regQuestionTitle = "^(.)+[?|:]$"; static String regQuestionAnswer = "^([-|+].+)$"; //TODO добавить проверку на колличество вопросов (не должно превышать размер из файла) public static List<Question> createListOfQuestions(List<String> listOfWords) { Set<Question> questionSet = new HashSet<>(); List<String> answers = new ArrayList<>(); String strTitle = ""; listOfWords.remove(0); for (int i = 0; i < listOfWords.size(); i++) { if (listOfWords.get(i).isEmpty()) { listOfWords.remove(listOfWords.get(i)); } if (listOfWords.get(i).matches(regQuestionTitle)) { strTitle = listOfWords.get(i); } else { answers.add(listOfWords.get(i)); if ((i + 1) < listOfWords.size() && !listOfWords.get(i + 1).matches(regQuestionAnswer)) { Collections.shuffle(answers); questionSet.add(new Question(strTitle, new ArrayList<>(answers))); answers.clear(); } } } List<Question> questionList = new ArrayList<>(questionSet); Collections.shuffle(questionList); return questionList.stream().limit(Message.LIMIT_QUESTION_SIZE).toList(); } public static List<String> getListOfTopics() { List<File> fileList = getListOfFilesFromMainDirectory(); List<String> listOfTopics = new ArrayList<>(); for (File file : fileList) { String topic = parseFile(String.valueOf(file)).toString(); listOfTopics.add(topic.substring(2, topic.lastIndexOf("\",")) .replaceAll("\",", "")); } return listOfTopics; } public static List<String> parseFile(String dataFile) { List<String> listOfWords = new ArrayList<>(); try { listOfWords = Files.readAllLines(Paths.get(dataFile)); } catch (IOException ex) { System.out.println(ex.getMessage()); } return listOfWords; } public static List<File> getListOfFilesFromMainDirectory() { File directory = new File(Analizable.PATH_FILES_DIRECTORY); File[] arrFiles = directory.listFiles(); assert arrFiles != null; return Arrays.asList(arrFiles); } }