diff --git a/task01/src/com/example/task01/Task01Main.java b/task01/src/com/example/task01/Task01Main.java index 5dfc11b..de1dee3 100644 --- a/task01/src/com/example/task01/Task01Main.java +++ b/task01/src/com/example/task01/Task01Main.java @@ -1,20 +1,55 @@ package com.example.task01; -import java.io.File; -import java.io.IOException; +import java.io.*; +import java.util.*; public class Task01Main { public static void main(String[] args) throws IOException, InterruptedException { //здесь вы можете вручную протестировать ваше решение, вызывая реализуемый метод и смотря результат // например вот так: - /* - System.out.println(extractSoundName(new File("task01/src/main/resources/3727.mp3"))); - */ + + System.out.println(extractSoundName(new File("src/main/resources/3724.mp3"))); + } + // Адаптируем путь к файлу, чтобы тесты проходили и команда срабатывала + // ProcessBuilder строит по сути "запрос" в терминал, в него указываем наши команды + // Process отправляет эти команды + // Дальше преобразуем, чтобы работать с полученными данными + public static String extractSoundName(File file) throws IOException, InterruptedException { - // your implementation here - return "sound name"; + String ffprobePath = "/opt/homebrew/bin/ffprobe"; + String absolutePath = "/Users/admin/IdeaProjects/8-java-io2/task01/" + file.toString(); + ProcessBuilder process = new ProcessBuilder(ffprobePath, "-v", "error", "-of", "flat", "-show_format", absolutePath); + Process pr = process.start(); + List output = new ArrayList(); + + try (BufferedReader reader = new BufferedReader(new InputStreamReader(pr.getInputStream()))){ + String line; + int i = 0; + + while ((line = reader.readLine()) != null){ + output.add(line); + } + } + + + pr.waitFor(); + + StringBuilder name = new StringBuilder(); + for (int i = 0; i < output.size(); i++){ + if (output.get(i).startsWith("format.tags.title=")){ + String temp = output.get(i); + + char[] chars = temp.toCharArray(); + + for (i = 19; i < chars.length - 1; i++){ + name.append(chars[i]); + } + } + + } + return name.toString(); } } diff --git a/task02/src/com/example/task02/Task02Main.java b/task02/src/com/example/task02/Task02Main.java index 750f7ba..18d6146 100644 --- a/task02/src/com/example/task02/Task02Main.java +++ b/task02/src/com/example/task02/Task02Main.java @@ -1,23 +1,53 @@ package com.example.task02; +import java.io.BufferedReader; import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.file.Files; import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Stream; public class Task02Main { public static void main(String[] args) throws IOException, InterruptedException { //здесь вы можете вручную протестировать ваше решение, вызывая реализуемый метод и смотря результат // например вот так: - /* + System.out.println(listFiles(Paths.get("task02/src/main/resources/"))); - */ + } public static List listFiles(Path rootDir) throws IOException, InterruptedException { - // your implementation here + // Path adaptedPath = Paths.get("/Users/admin/IdeaProjects/8-java-io2/" + rootDir); + List result = new ArrayList(); - return null; - } + if (Files.isRegularFile(rootDir)){ + result.add(rootDir); + return result; + } + + try (Stream stream = Files.list(rootDir)){ + stream.forEach(item ->{ + if (Files.isDirectory(item)) { + try { + result.addAll(listFiles(item)); + } catch (IOException e) { + throw new RuntimeException(e); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + else { + result.add(item); + } + }); + + } + return result; + } } + diff --git a/task03/src/com/example/task03/SampleData.java b/task03/src/com/example/task03/SampleData.java index 0654af5..70bbc0b 100644 --- a/task03/src/com/example/task03/SampleData.java +++ b/task03/src/com/example/task03/SampleData.java @@ -1,9 +1,10 @@ package com.example.task03; +import java.io.Serializable; import java.util.Date; import java.util.Objects; -public class SampleData { +public class SampleData implements Serializable { static final long serialVersionUID = 132706691457162967L; String name; diff --git a/task03/src/com/example/task03/Task03Main.java b/task03/src/com/example/task03/Task03Main.java index 740fff1..f5b68fd 100644 --- a/task03/src/com/example/task03/Task03Main.java +++ b/task03/src/com/example/task03/Task03Main.java @@ -2,20 +2,25 @@ import java.io.IOException; import java.io.InputStream; +import java.io.ObjectInputStream; public class Task03Main { public static void main(String[] args) throws IOException, ClassNotFoundException { //здесь вы можете вручную протестировать ваше решение, вызывая реализуемый метод и смотря результат // например вот так: - /* - System.out.println(deserialize(new FileInputStream("task03/src/main/resources/example1.bin"))); - */ + + // System.out.println(deserialize(new FileInputStream("task03/src/main/resources/example1.bin"))); + } public static SampleData deserialize(InputStream inputStream) throws IOException, ClassNotFoundException { - // your implementation here - return null; + try (ObjectInputStream ois = new ObjectInputStream(inputStream)){ + SampleData deserialized = (SampleData) ois.readObject(); + return (SampleData) deserialized; + } catch (IOException | ClassNotFoundException e){ + return null; + } } }