import java.util.*;
import java.util.stream.Collectors;
public class FileUtil {
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;
}