Full example code and resources
This commit is contained in:
@@ -1,8 +1,19 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
<modelVersion>4.0.0</modelVersion>
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
<groupId>fileswithstreams</groupId>
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
<artifactId>fileswithstreams</artifactId>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
<groupId>fileswithstreams</groupId>
|
||||||
<name>fileswithstreams</name>
|
<artifactId>fileswithstreams</artifactId>
|
||||||
<description>File management with streams</description>
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<name>fileswithstreams</name>
|
||||||
|
<description>File management with streams</description>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>4.13</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
@@ -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 + "]";
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,30 +1,100 @@
|
|||||||
package io.reflectoring.fileswithstreams;
|
package io.reflectoring.fileswithstreams;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.jar.JarEntry;
|
import java.util.jar.JarEntry;
|
||||||
import java.util.jar.JarFile;
|
import java.util.jar.JarFile;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
public class FilesWithStreams {
|
public class FilesWithStreams {
|
||||||
public static final String fileName = "src/main/resources/paths.properties";
|
|
||||||
static String folderPath = "src/main/resources/books";
|
static String folderPath = "src/main/resources/books";
|
||||||
static String filePath = "src/main/resources/books/bookIndex.txt";
|
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 {
|
public static void main(String[] args) throws IOException {
|
||||||
// processWithStream();
|
System.out.println("-------------------Files with Streams------------------ ");
|
||||||
// readLineByLineUsingFiles();
|
|
||||||
|
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();
|
readLineByLineUsingBufferedReader();
|
||||||
readFilterCountUsingFiles();
|
|
||||||
// printJarFileContents();
|
System.out.println(
|
||||||
// printMatchingJarEntries();
|
"\r\n" + "-------------------Example 3 - Reading all lines from a file------------------ " + "\r\n");
|
||||||
// readWithParallelStreamAndPrint();
|
|
||||||
|
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() {
|
static void processWithStream() {
|
||||||
@@ -44,15 +114,76 @@ public class FilesWithStreams {
|
|||||||
lines.forEach(System.out::println);
|
lines.forEach(System.out::println);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void readFilterCountUsingFiles() throws IOException {
|
static void readAllLinesUsingFiles() throws IOException {
|
||||||
try (Stream<String> lines = Files.lines(Path.of(filePath))) {
|
List<String> strList = Files.readAllLines(Path.of(filePath));
|
||||||
|
Stream<String> lines = strList.stream();
|
||||||
|
lines.forEach(System.out::println);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void readUtfEncodedFile() throws IOException {
|
||||||
|
try (Stream<String> 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<String> lines = Files.lines(Path.of(csvPath))) {
|
||||||
|
List<Cake> 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<String> lines = Files.lines(Path.of(filePath))) {
|
||||||
long i = lines.filter(line -> line.startsWith("A")).count();
|
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<String> lines = Files.lines(Path.of(filePath))) {
|
||||||
|
Stream<String> words = lines.flatMap(line -> Stream.of(line.split("\\W+")));
|
||||||
|
Set<String> wordSet = words.collect(Collectors.toSet());
|
||||||
|
System.out.println(wordSet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void listDirectories() throws IOException {
|
||||||
|
try (Stream<Path> paths = Files.list(Path.of(folderPath))) {
|
||||||
|
paths.filter(Files::isDirectory).forEach(System.out::println);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void listRegularFiles() throws IOException {
|
||||||
|
try (Stream<Path> paths = Files.list(Path.of(folderPath))) {
|
||||||
|
paths.filter(Files::isRegularFile).forEach(System.out::println);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void walkFilesRecursively() throws IOException {
|
||||||
|
try (Stream<Path> 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<Path> 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 {
|
static void printJarFileContents() throws IOException {
|
||||||
try (JarFile jFile = new JarFile(jarFile)) {
|
try (JarFile jFile = new JarFile(jarFile)) {
|
||||||
jFile.stream().forEach(file -> System.out.println(file));
|
jFile.stream().forEach(file -> System.out.println(file));
|
||||||
@@ -70,10 +201,8 @@ public class FilesWithStreams {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void readWithParallelStreamAndPrint() throws IOException {
|
static void readWithParallelStreamAndPrint() throws IOException {
|
||||||
|
try (Stream<String> lines = (Files.lines(Path.of(filePath)).parallel())) {
|
||||||
List<String> lines = Files.readAllLines(Path.of(filePath));
|
lines.forEach(System.out::println);
|
||||||
try (Stream<String> stream = lines.parallelStream()) {
|
|
||||||
stream.forEach(System.out::println);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
BIN
core-java/streams/fileswithstreams/src/main/resources/books.zip
Normal file
BIN
core-java/streams/fileswithstreams/src/main/resources/books.zip
Normal file
Binary file not shown.
@@ -0,0 +1,6 @@
|
|||||||
|
#Cakes
|
||||||
|
1, Pound Cake,100
|
||||||
|
2, Red Velvet Cake,500
|
||||||
|
3, Carrot Cake,300
|
||||||
|
4, Sponge Cake,400
|
||||||
|
5, Chiffon Cake,600
|
||||||
|
@@ -1,4 +1 @@
|
|||||||
Master, you are the sole goal of human life
|
akarui _ あかるい _ bright
|
||||||
We are all but slaves of wishes
|
|
||||||
Putting bar to our advancement
|
|
||||||
You are the one and only true lord who can bring us upto that level
|
|
||||||
|
|||||||
Reference in New Issue
Block a user