From 13888f806ededb39fbf015ff5e269277c1b7d90c Mon Sep 17 00:00:00 2001 From: susetech Date: Sat, 19 Sep 2020 16:39:55 +0530 Subject: [PATCH] Full example code and resources --- core-java/streams/fileswithstreams/pom.xml | 25 ++- .../reflectoring/fileswithstreams/Cake.java | 18 ++ .../fileswithstreams/FilesWithStreams.java | 161 ++++++++++++++++-- .../src/main/resources/books.zip | Bin 0 -> 40223 bytes .../src/main/resources/cakes.csv | 6 + .../src/main/resources/input.txt | 5 +- 6 files changed, 188 insertions(+), 27 deletions(-) create mode 100644 core-java/streams/fileswithstreams/src/main/java/io/reflectoring/fileswithstreams/Cake.java create mode 100644 core-java/streams/fileswithstreams/src/main/resources/books.zip create mode 100644 core-java/streams/fileswithstreams/src/main/resources/cakes.csv diff --git a/core-java/streams/fileswithstreams/pom.xml b/core-java/streams/fileswithstreams/pom.xml index 47bd68f..10381bf 100644 --- a/core-java/streams/fileswithstreams/pom.xml +++ b/core-java/streams/fileswithstreams/pom.xml @@ -1,8 +1,19 @@ - - 4.0.0 - fileswithstreams - fileswithstreams - 0.0.1-SNAPSHOT - fileswithstreams - File management with streams + + 4.0.0 + fileswithstreams + fileswithstreams + 0.0.1-SNAPSHOT + fileswithstreams + File management with streams + + + junit + junit + 4.13 + test + + + \ No newline at end of file diff --git a/core-java/streams/fileswithstreams/src/main/java/io/reflectoring/fileswithstreams/Cake.java b/core-java/streams/fileswithstreams/src/main/java/io/reflectoring/fileswithstreams/Cake.java new file mode 100644 index 0000000..b28b09c --- /dev/null +++ b/core-java/streams/fileswithstreams/src/main/java/io/reflectoring/fileswithstreams/Cake.java @@ -0,0 +1,18 @@ +package io.reflectoring.fileswithstreams; + +public class Cake { + private int id; + private String name; + private int price; + + public Cake(int id, String name, int price) { + this.id = id; + this.name = name; + this.price = price; + } + + @Override + public String toString() { + return "Cake [id=" + id + ", name=" + name + ", price=" + price + "]"; + } +} diff --git a/core-java/streams/fileswithstreams/src/main/java/io/reflectoring/fileswithstreams/FilesWithStreams.java b/core-java/streams/fileswithstreams/src/main/java/io/reflectoring/fileswithstreams/FilesWithStreams.java index 1d1b1f4..806d28e 100644 --- a/core-java/streams/fileswithstreams/src/main/java/io/reflectoring/fileswithstreams/FilesWithStreams.java +++ b/core-java/streams/fileswithstreams/src/main/java/io/reflectoring/fileswithstreams/FilesWithStreams.java @@ -1,30 +1,100 @@ package io.reflectoring.fileswithstreams; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; import java.util.List; import java.util.Optional; +import java.util.Set; import java.util.jar.JarEntry; import java.util.jar.JarFile; +import java.util.regex.Pattern; +import java.util.stream.Collectors; import java.util.stream.Stream; public class FilesWithStreams { - public static final String fileName = "src/main/resources/paths.properties"; + static String folderPath = "src/main/resources/books"; static String filePath = "src/main/resources/books/bookIndex.txt"; - static String jarFile = "src/main/resources/books/books.zip"; + static String csvPath = "src/main/resources/cakes.csv"; + static String utfFilePath = "src/main/resources/input.txt"; + static String jarFile = "src/main/resources/books.zip"; public static void main(String[] args) throws IOException { - // processWithStream(); - // readLineByLineUsingFiles(); + System.out.println("-------------------Files with Streams------------------ "); + + System.out.println("-------------------Introductory Example------------------ "); + + processWithStream(); + + System.out.println( + "\r\n" + "-------------------Example 1 - Reading line by line from a file------------------ " + "\r\n"); + + readLineByLineUsingFiles(); + + System.out.println( + "\r\n" + "-------------------Example 2 - Reading with Buffered Reader------------------" + "\r\n"); + readLineByLineUsingBufferedReader(); - readFilterCountUsingFiles(); - // printJarFileContents(); - // printMatchingJarEntries(); - // readWithParallelStreamAndPrint(); + + System.out.println( + "\r\n" + "-------------------Example 3 - Reading all lines from a file------------------ " + "\r\n"); + + readAllLinesUsingFiles(); + + System.out.println( + "\r\n" + "...................Example 4 - Reading with parallel streams------------------ " + "\r\n"); + + readWithParallelStreamAndPrint(); + + System.out.println( + "\r\n" + "-------------------Example 5 - Reading UTF-encoded file------------------ " + "\r\n"); + + readUtfEncodedFile(); + + System.out.println( + "\r\n" + "-------------------Example 6 - Reading, Filtering and Counting------------------ " + "\r\n"); + + readFilterCountFromFile(); + + System.out.println("\r\n" + "-------------------Example 7 - Splitting Words------------------ " + "\r\n"); + + splitWordsFromFile(); + + System.out.println("\r\n" + "-------------------Example 8 - Loading from CSV - ------------------ " + "\r\n"); + + loadItemsFromCsvFile(); + + System.out.println("\r\n" + "...................Example 9 - Listing Directories------------------ " + "\r\n"); + + listDirectories(); + + System.out + .println("\r\n" + "...................Example 10 - Listing Regular Files------------------ " + "\r\n"); + + listRegularFiles(); + + System.out.println( + "\r\n" + "...................Example 11 - Walking Files Recursively------------------ " + "\r\n"); + + walkFilesRecursively(); + + System.out.println("\r\n" + "...................Example 12 - Finding Files------------------ " + "\r\n"); + + findFiles(); + + System.out.println( + "\r\n" + "...................Example 13 - Printing JAR fie contents------------------ " + "\r\n"); + + printJarFileContents(); + + System.out.println("...................Example 14 - Printing Matching JAR entries------------------ " + "\r\n"); + + printMatchingJarEntries(); + } static void processWithStream() { @@ -44,15 +114,76 @@ public class FilesWithStreams { lines.forEach(System.out::println); } } - - static void readFilterCountUsingFiles() throws IOException { - try (Stream lines = Files.lines(Path.of(filePath))) { + + static void readAllLinesUsingFiles() throws IOException { + List strList = Files.readAllLines(Path.of(filePath)); + Stream lines = strList.stream(); + lines.forEach(System.out::println); + } + + static void readUtfEncodedFile() throws IOException { + try (Stream lines = Files.lines(Path.of(utfFilePath), StandardCharsets.UTF_8)) { + lines.forEach(System.out::println); + } + } + + static void loadItemsFromCsvFile() throws IOException { + Pattern pattern = Pattern.compile(","); + try (Stream lines = Files.lines(Path.of(csvPath))) { + List cakes = lines.skip(1).map(line -> { + String[] arr = pattern.split(line); + return new Cake(Integer.parseInt(arr[0]), arr[1], Integer.parseInt(arr[2])); + }).collect(Collectors.toList()); + cakes.forEach(System.out::println); + } + } + + static void readFilterCountFromFile() throws IOException { + try (Stream lines = Files.lines(Path.of(filePath))) { long i = lines.filter(line -> line.startsWith("A")).count(); - System.out.println("Count of lines starting with 'A' is " + i); + System.out.println("The count of lines starting with 'A' is " + i); } } + static void splitWordsFromFile() throws IOException { + try (Stream lines = Files.lines(Path.of(filePath))) { + Stream words = lines.flatMap(line -> Stream.of(line.split("\\W+"))); + Set wordSet = words.collect(Collectors.toSet()); + System.out.println(wordSet); + } + } + + static void listDirectories() throws IOException { + try (Stream paths = Files.list(Path.of(folderPath))) { + paths.filter(Files::isDirectory).forEach(System.out::println); + } + } + + static void listRegularFiles() throws IOException { + try (Stream paths = Files.list(Path.of(folderPath))) { + paths.filter(Files::isRegularFile).forEach(System.out::println); + } + } + + static void walkFilesRecursively() throws IOException { + try (Stream stream = Files.walk(Path.of(folderPath))) { + stream.filter(Files::isRegularFile).forEach(System.out::println); + } + } + + static void findFiles() throws IOException { + int depth = Integer.MAX_VALUE; + try (Stream paths = Files.find(Path.of(folderPath), depth, (path, attr) -> { + return attr.isRegularFile() && path.toString().endsWith(".pdf"); + })) { + + paths.forEach(System.out::println); + + } + + } + static void printJarFileContents() throws IOException { try (JarFile jFile = new JarFile(jarFile)) { jFile.stream().forEach(file -> System.out.println(file)); @@ -70,10 +201,8 @@ public class FilesWithStreams { } static void readWithParallelStreamAndPrint() throws IOException { - - List lines = Files.readAllLines(Path.of(filePath)); - try (Stream stream = lines.parallelStream()) { - stream.forEach(System.out::println); + try (Stream lines = (Files.lines(Path.of(filePath)).parallel())) { + lines.forEach(System.out::println); } } diff --git a/core-java/streams/fileswithstreams/src/main/resources/books.zip b/core-java/streams/fileswithstreams/src/main/resources/books.zip new file mode 100644 index 0000000000000000000000000000000000000000..01789ea27fef7e727b67ec6ae514c33ee588278f GIT binary patch literal 40223 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 z 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