Code Review

IO

?

import java.util.*;
import java.util.stream.Collectors;

public class FileUtil {

?

public class FileUtilDemo {
    public static void main(String[] args) {
        FileUtil fileUtil = new FileUtil();
        Path inputFilePath = Path.of("D://IT/Courses IT Academy/course-java-core/src/test/resources/practice.io", "text.txt");
        Path outputFilePath = Path.of("D://IT/Courses IT Academy/course-java-core/src/test/resources/practice.io", "textcopy.txt");
        Path numbersFilePath = Path.of("D://IT/Courses IT Academy/course-java-core/src/test/resources/practice.io", "numbers.txt");
        Path numbers5FilePath = Path.of("D://IT/Courses IT Academy/course-java-core/src/test/resources/practice.io", "numbers5.txt");
        Path studentsFilePath = Path.of("D://IT/Courses IT Academy/course-java-core/src/test/resources/practice.io", "studentsProgress.txt");
        Path codeFilePath = Path.of("D://IT/Courses IT Academy/course-java-core/src/test/resources/practice.io", "javacode.txt");

?

static Stream<Arguments> provideArgumentsGetListOfStrings() {
        return Stream.of(
                Arguments.of(Path.of("D://IT/Courses IT Academy/course-java-core/src/test/resources/practice.io", "numbers.txt"),
                        List.of("34 7 8 38 1 3", "8 7 6 5 4 3 1", "87 45 76 35 75 24")),
                Arguments.of(Path.of("D://IT/Courses IT Academy/course-java-core/src/test/resources/practice.io", "studentsProgress.txt"),
                        List.of("Komleva, 8, 9, 10", "Flurick, 5, 8, 7", "Belka, 4, 9, 6"))
        );
    }

?

try (BufferedReader reader = new BufferedReader(new FileReader(inputFilePath.toFile()))) {
    try (BufferedWriter writer = new BufferedWriter(new FileWriter(outputFilePath.toFile()))) {
        String str;
        while ((str = reader.readLine()) != null) {
            writer.write(str.toUpperCase());
            writer.newLine();
        }
    }
} catch (IOException e) {
    e.printStackTrace();
}

?

try {
    Scanner sc = new Scanner(inputFilePath);
    String previousWord = null;
    if (sc.hasNext()) {
        previousWord = sc.next().replaceAll("[.,?!:;\\s]", "");
    }
    while (sc.hasNext()) {
        String nextWord = sc.next().replaceAll("[.,?!:;\\s]", "");
        if (previousWord.endsWith(String.valueOf(nextWord.charAt(0)))) {
            output.add(previousWord + " " + nextWord);
        }
        previousWord = nextWord;
    }
    sc.close();
} catch (IOException e) {
    e.printStackTrace();
}

?

public List<String> getListOfLargestNumberCombination(Path inputFilePath) {
    List<String> numbersOrders = new ArrayList<>();
    List<Integer> tempBiggest = new ArrayList<>();
    List<Integer> tempCurrent = new ArrayList<>();
    try (BufferedReader bufferedReader = new BufferedReader(new FileReader(inputFilePath.toFile()))) {
        String line;
        while ((line = bufferedReader.readLine()) != null) {
            String[] listOfNumber = line.split(" ");
            tempCurrent.add(Integer.parseInt(listOfNumber[0]));
            for (int i = 1; i < listOfNumber.length; i++) {
                if (Integer.parseInt(listOfNumber[i]) >= Integer.parseInt(listOfNumber[i - 1])) {
                    tempCurrent.add(Integer.parseInt(listOfNumber[i]));
                } else {
                    if (tempCurrent.size() > tempBiggest.size()) {
                        tempBiggest.clear();
                        tempBiggest.addAll(tempCurrent);
                    }
                    tempCurrent.clear();
                    tempCurrent.add(Integer.parseInt(listOfNumber[i]));
                }
            }
            if (tempCurrent.size() > tempBiggest.size()) {
                tempBiggest.clear();
                tempBiggest.addAll(tempCurrent);
            }
            String lineOfNumbers = "";
            for (Integer number : tempBiggest) {
                lineOfNumbers += number + " ";
            }
            numbersOrders.add(lineOfNumbers);
            tempBiggest.clear();
            tempCurrent.clear();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return numbersOrders;
}

?

public Map<String, Integer> getWordsFrequency(Path inputFilePath) {
    Map<String, Integer> output = new HashMap<>();
    Map<String, Integer> sorted = new HashMap<>();
    try (BufferedReader reader = new BufferedReader(new FileReader(inputFilePath.toFile()))) {
        String str;
        while ((str = reader.readLine()) != null) {
            String text = str.toLowerCase().trim().replaceAll("[^a-zA-Z_0-9 ]", "");
            for (String currentWord : text.split(" ")) {
                output.put(currentWord, output.getOrDefault(currentWord, 0) + 1);
            }
            sorted = output.entrySet()
                    .stream()
                    .sorted(Map.Entry.comparingByValue())
                    .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e1, LinkedHashMap::new));
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return sorted;
}

?

public void writeSortedNumbers(Path inputFilePath) {
    try (BufferedReader reader = new BufferedReader(new FileReader(inputFilePath.toFile()))) {
        try (BufferedWriter writer = new BufferedWriter(new FileWriter(inputFilePath + "_"))) {
            String str;
            while ((str = reader.readLine()) != null) {
                String[] array = str.split(" ");
                List<Integer> sorted = Arrays.stream(array)
                        .map(Integer::parseInt)
                        .sorted()
                        .collect(Collectors.toList());
                writer.write(sorted.toString());
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

?

public List<String> getListLines(Path file) {
    List<String> listLine = new ArrayList<>();
    try {
        listLine = Files.readAllLines(file);
    } catch (Exception e) {
        LOGGER.log(Level.WARNING, "StackTrace " + Arrays.toString(e.getStackTrace()));
    }
    return listLine;
}

?

public List<String> getWordsStartingWithVowel(Path file) {
    List<String> words = new ArrayList<>();
    try (BufferedReader bufferedReader = new BufferedReader(new FileReader(String.valueOf(file)))) {
        String line;
        while ((line = bufferedReader.readLine()) != null) {
            Arrays.stream(line.split(" +"))
                    .filter(lines -> lines.substring(0, 1).matches("[AaEeUuIiOoYy]"))
                    .forEach(words::add);
        }
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
    return words;
}

?

?

?

?