Skip to content

Commit b74123d

Browse files
committed
feat(file-io): 🎸 file improvements, translated
Refers: #9
1 parent da0699d commit b74123d

File tree

6 files changed

+95
-97
lines changed

6 files changed

+95
-97
lines changed
Lines changed: 74 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1,166 +1,164 @@
11
:java-package: src/org/j6toj8/fileio
22
:section-java-package: ../../../{java-package}
33

4-
=== Files com Streams
4+
=== Files with Streams
55

6-
.Objetivo
6+
.Objective
77
--------------------------------------------------
88
Find a file by using the PathMatcher interface, and use Java SE 8 I/O improvements, including Files.find(), Files.walk(), and lines() methods
9-
-
10-
Encontrar um arquivo usando a interface PathMatcher, e usar as melhorias de I/O do Java SE 8, incluindo os métodos Files.find(), Files.walk(), and lines()
119
--------------------------------------------------
1210

13-
Nestão seção serão apresentadas melhorias do Java 8 para encontrar e ler arquivos. São operações que já poderiam ser realizadas com outros métodos antes do Java 8. Porém, com essas melhorias, é possível realizar essas operações utilizando Streams.
11+
In this section Java 8 enhancements for finding and reading files will be presented. These are operations that could already be performed with other methods before Java 8. However, with these improvements, you can perform these operations using Streams.
1412

15-
. É possível criar um _Stream_ para acessar todos os arquivos, diretórios e subdiretórios de um `Path`.
13+
. You can create a _Stream_ to access all files, directories and subdirectories of a `Path`.
1614
+
1715
[source,java,indent=0]
1816
.{java-package}/fileimprovements/Improvements_Walk.java
1917
----
2018
include::{section-java-package}/fileimprovements/Improvements_Walk.java[tag=code]
2119
----
2220
+
23-
.Saída no console
21+
.console output
2422
[source,console]
2523
----
26-
Path: /home/rinaldo/arquivos
27-
28-
Todos os arquivos e diretórios:
29-
/home/rinaldo/arquivos
30-
/home/rinaldo/arquivos/arquivo1.txt
31-
/home/rinaldo/arquivos/arquivo3.txt
32-
/home/rinaldo/arquivos/subpasta1
33-
/home/rinaldo/arquivos/subpasta1/subpasta12
34-
/home/rinaldo/arquivos/subpasta1/subpasta12/arquivo122.txt
35-
/home/rinaldo/arquivos/subpasta1/subpasta12/arquivo121.txt
36-
/home/rinaldo/arquivos/subpasta1/arquivo11.txt
37-
/home/rinaldo/arquivos/subpasta1/subpasta11
38-
/home/rinaldo/arquivos/subpasta1/arquivo12.txt
39-
/home/rinaldo/arquivos/subpasta1/arquivo13.txt
40-
/home/rinaldo/arquivos/arquivo2.txt
41-
42-
Os primeiro 5 arquivos e diretórios:
43-
/home/rinaldo/arquivos
44-
/home/rinaldo/arquivos/arquivo1.txt
45-
/home/rinaldo/arquivos/arquivo3.txt
46-
/home/rinaldo/arquivos/subpasta1
47-
/home/rinaldo/arquivos/subpasta1/subpasta12
24+
Path: /home/rinaldo/files
25+
26+
All files and directories:
27+
/home/rinaldo/files
28+
/home/rinaldo/files/file1.txt
29+
/home/rinaldo/files/file3.txt
30+
/home/rinaldo/files/subfolder1
31+
/home/rinaldo/files/subfolder1/subfolder12
32+
/home/rinaldo/files/subfolder1/subfolder12/file122.txt
33+
/home/rinaldo/files/subfolder1/subfolder12/file121.txt
34+
/home/rinaldo/files/subfolder1/file11.txt
35+
/home/rinaldo/files/subfolder1/subfolder11
36+
/home/rinaldo/files/subfolder1/file12.txt
37+
/home/rinaldo/files/subfolder1/file13.txt
38+
/home/rinaldo/files/file2.txt
39+
40+
The first 5 files and directories:
41+
/home/rinaldo/files
42+
/home/rinaldo/files/file1.txt
43+
/home/rinaldo/files/file3.txt
44+
/home/rinaldo/files/subfolder1
45+
/home/rinaldo/files/subfolder1/subfolder12
4846
----
4947
+
50-
Perceba que a instância criada é realmente um `Stream<Path>`, de tal forma que é possível realizar as operações disponíveis em qualquer __Stream__, como o método `filter`.
48+
Note that the created instance is really a `Stream <Path>`, so that you can perform the operations available on any _Stream_, such as the `filter` method.
5149

52-
. Existe uma versão do método `walk` para definir opções adicionais e limitar a profundidade do acesso aos subdiretórios.
50+
. There is a version of the `walk` method for setting additional options and limiting the depth of access to subdirectories.
5351
+
5452
[source,java,indent=0]
5553
.{java-package}/fileimprovements/Improvements_WalkDepth.java
5654
----
5755
include::{section-java-package}/fileimprovements/Improvements_WalkDepth.java[tag=code]
5856
----
5957
+
60-
.Saída no console
58+
.console output
6159
[source,console]
6260
----
63-
Path: /home/rinaldo/arquivos
61+
Path: /home/rinaldo/files
6462
65-
Arquivos e Links simbólicos até o segundo nível:
66-
/home/rinaldo/arquivos
67-
/home/rinaldo/arquivos/arquivo1.txt
68-
/home/rinaldo/arquivos/arquivo3.txt
69-
/home/rinaldo/arquivos/subpasta1
70-
/home/rinaldo/arquivos/subpasta1/subpasta12
71-
/home/rinaldo/arquivos/subpasta1/arquivo11.txt
72-
/home/rinaldo/arquivos/subpasta1/subpasta11
73-
/home/rinaldo/arquivos/subpasta1/arquivo12.txt
74-
/home/rinaldo/arquivos/subpasta1/arquivo13.txt
75-
/home/rinaldo/arquivos/arquivo2.txt
63+
Symbolic files and links to the second level:
64+
/home/rinaldo/files
65+
/home/rinaldo/files/file1.txt
66+
/home/rinaldo/files/file3.txt
67+
/home/rinaldo/files/subfolder1
68+
/home/rinaldo/files/subfolder1/subfolder12
69+
/home/rinaldo/files/subfolder1/file11.txt
70+
/home/rinaldo/files/subfolder1/subfolder11
71+
/home/rinaldo/files/subfolder1/file12.txt
72+
/home/rinaldo/files/subfolder1/file13.txt
73+
/home/rinaldo/files/file2.txt
7674
----
7775

78-
. É possível pesquisar por um arquivo utilizando o método `find` e filtrar por atributos.
76+
. You can search for a file using the `find` method and filter by attributes.
7977
+
8078
[source,java,indent=0]
8179
.{java-package}/fileimprovements/Improvements_Find.java
8280
----
8381
include::{section-java-package}/fileimprovements/Improvements_Find.java[tag=code]
8482
----
8583
+
86-
.Saída no console
84+
.console output
8785
[source,console]
8886
----
89-
Path: /home/rinaldo/arquivos
87+
Path: /home/rinaldo/files
9088
91-
Todos os arquivos, ignorando diretórios, até o segundo nível:
92-
/home/rinaldo/arquivos/arquivo1.txt
93-
/home/rinaldo/arquivos/arquivo3.txt
94-
/home/rinaldo/arquivos/subpasta1/arquivo11.txt
95-
/home/rinaldo/arquivos/subpasta1/arquivo12.txt
96-
/home/rinaldo/arquivos/subpasta1/arquivo13.txt
97-
/home/rinaldo/arquivos/arquivo2.txt
89+
All files, skipping directories, up to the second level:
90+
/home/rinaldo/files/file1.txt
91+
/home/rinaldo/files/file3.txt
92+
/home/rinaldo/files/subfolder1/file11.txt
93+
/home/rinaldo/files/subfolder1/file12.txt
94+
/home/rinaldo/files/subfolder1/file13.txt
95+
/home/rinaldo/files/file2.txt
9896
----
9997
+
100-
Perceba que ao utilizar o `find` a expressão lambda tem acesso ao `Path` e seus atributos, que é uma instância de `BasicFileAttributes`, permitindo uma maior flexibilidade na busca.
98+
Note that by using `find` the lambda expression has access to `Path` and its attributes, which is an instance of `BasicFileAttributes`, allowing for greater flexibility in searching.
10199

102-
. É possível listar o conteúdo de um `Path` utilizando o método `list`.
100+
. You can list the contents of a `Path` using the `list` method.
103101
+
104102
[source,java,indent=0]
105103
.{java-package}/fileimprovements/Improvements_List.java
106104
----
107105
include::{section-java-package}/fileimprovements/Improvements_List.java[tag=code]
108106
----
109107
+
110-
.Saída no console
108+
.console output
111109
[source,console]
112110
----
113-
Path: /home/rinaldo/arquivos
111+
Path: /home/rinaldo/files
114112
115-
Listagem do diretório:
116-
/home/rinaldo/arquivos/arquivo1.txt
117-
/home/rinaldo/arquivos/arquivo3.txt
118-
/home/rinaldo/arquivos/subpasta1
119-
/home/rinaldo/arquivos/arquivo2.txt
113+
Directory listing:
114+
/home/rinaldo/files/file1.txt
115+
/home/rinaldo/files/file3.txt
116+
/home/rinaldo/files/subfolder1
117+
/home/rinaldo/files/file2.txt
120118
121-
Listagem do diretório com filtro:
122-
/home/rinaldo/arquivos/arquivo1.txt
123-
/home/rinaldo/arquivos/arquivo3.txt
124-
/home/rinaldo/arquivos/arquivo2.txt
119+
Directory listing, files only:
120+
/home/rinaldo/files/file1.txt
121+
/home/rinaldo/files/file3.txt
122+
/home/rinaldo/files/file2.txt
125123
----
126124
+
127-
Perceba que o `list` não apresenta elementos dos subdiretórios.
125+
Note that `list` has no subdirectory elements.
128126

129-
. É possível recuperar todas as linhas de um arquivo como um _Stream_ utilizando o método `lines`.
127+
. You can retrieve all lines of a file as a _Stream_ using the `lines` method.
130128
+
131129
[source,java,indent=0]
132130
.{java-package}/fileimprovements/Improvements_Lines.java
133131
----
134132
include::{section-java-package}/fileimprovements/Improvements_Lines.java[tag=code]
135133
----
136134
+
137-
.Saída no console
135+
.console output
138136
[source,console]
139137
----
140-
Path: /home/rinaldo/arquivos/subpasta1/arquivo11.txt
138+
Path: /home/rinaldo/files/subfolder1/file11.txt
141139
142-
Conteúdo do arquivo:
140+
File content:
143141
1
144142
2
145143
3
146144
4
147145
5
148146
149-
Conteúdo do arquivo:
147+
File contents greater than 2:
150148
3
151149
4
152150
5
153151
----
154152

155-
153+
.References
156154
****
157155
158156
* Presenting the New Stream Methods
159157
+
160-
Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide (p. 486). Wiley. Edição do Kindle.
158+
Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide (p. 486). Wiley. Kindle Edition.
161159
162160
* https://www.baeldung.com/java-list-directory-files[List Files in a Directory in Java.]
163161
164162
* https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html[Class Files.] Java Plataform SE 7.
165163
166-
****
164+
****

src/org/j6toj8/fileio/fileimprovements/Improvements_Find.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@ public class Improvements_Find {
1010
public static void main(String[] args) {
1111
// tag::code[]
1212
String userHome = System.getProperty("user.home");
13-
Path path = Paths.get(userHome, "arquivos");
13+
Path path = Paths.get(userHome, "files");
1414
System.out.println("Path: " + path);
1515

1616
try {
17-
System.out.println("\nTodos os arquivos, ignorando diretórios, até o segundo nível: ");
18-
// ao chamar o find:
19-
// primeiro argumento: o path inicial
20-
// segundo argumento: o limite de profundidade
21-
// terceiro argumento: expressão lambda para filtrar
17+
System.out.println("\nAll files, skipping directories, up to the second level: ");
18+
// when calling find:
19+
// first argument: the initial path
20+
// second argument: the depth limit
21+
// third argument: lambda expression to filter
2222
Files.find(path, 2, (p, a) -> a.isRegularFile())
2323
.forEach(System.out::println);
2424
} catch (IOException e) {

src/org/j6toj8/fileio/fileimprovements/Improvements_Lines.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,21 @@ public class Improvements_Lines {
1010
public static void main(String[] args) {
1111
// tag::code[]
1212
String userHome = System.getProperty("user.home");
13-
Path path = Paths.get(userHome, "arquivos", "subpasta1", "arquivo11.txt");
13+
Path path = Paths.get(userHome, "files", "subfolder1", "file11.txt");
1414
System.out.println("Path: " + path);
1515

1616
try {
17-
System.out.println("\nConteúdo do arquivo: ");
18-
Files.lines(path) // recupera todas as linhas do arquivo como Stream
17+
System.out.println("\nFile content: ");
18+
Files.lines(path) // retrieves all file lines as Stream
1919
.forEach(System.out::println);
2020
} catch (IOException e) {
2121
e.printStackTrace();
2222
}
2323

2424
try {
25-
System.out.println("\nConteúdo do arquivo maior que 2: ");
25+
System.out.println("\nFile contents greater than 2: ");
2626
Files.lines(path)
27-
.filter(s -> Integer.parseInt(s) > 2) // filtra maior que 2
27+
.filter(s -> Integer.parseInt(s) > 2) // filters greater than 2
2828
.forEach(System.out::println);
2929
} catch (IOException e) {
3030
e.printStackTrace();

src/org/j6toj8/fileio/fileimprovements/Improvements_List.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,19 @@ public class Improvements_List {
1010
public static void main(String[] args) {
1111
// tag::code[]
1212
String userHome = System.getProperty("user.home");
13-
Path path = Paths.get(userHome, "arquivos");
13+
Path path = Paths.get(userHome, "files");
1414
System.out.println("Path: " + path);
1515

1616
try {
17-
System.out.println("\nListagem do diretório: ");
17+
System.out.println("\nDirectory listing: ");
1818
Files.list(path)
1919
.forEach(System.out::println);
2020
} catch (IOException e) {
2121
e.printStackTrace();
2222
}
2323

2424
try {
25-
System.out.println("\nListagem do diretório, apenas arquivos: ");
25+
System.out.println("\nDirectory listing, files only: ");
2626
Files.list(path)
2727
.filter(p -> Files.isRegularFile(p))
2828
.forEach(System.out::println);

src/org/j6toj8/fileio/fileimprovements/Improvements_Walk.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,19 @@ public class Improvements_Walk {
1010
public static void main(String[] args) {
1111
// tag::code[]
1212
String userHome = System.getProperty("user.home");
13-
Path path = Paths.get(userHome, "arquivos");
13+
Path path = Paths.get(userHome, "files");
1414
System.out.println("Path: " + path);
1515

1616
try {
17-
System.out.println("\nTodos os arquivos e diretórios: ");
18-
Files.walk(path) // cria o stream
19-
.forEach(System.out::println); // imprime no console
17+
System.out.println("\nAll files and directories: ");
18+
Files.walk(path) // creates a stream
19+
.forEach(System.out::println); // prints on console
2020
} catch (IOException e) {
2121
e.printStackTrace();
2222
}
2323

2424
try {
25-
System.out.println("\nOs primeiro 5 arquivos e diretórios: ");
25+
System.out.println("\nThe first 5 files and directories: ");
2626
Files.walk(path)
2727
.limit(5)
2828
.forEach(System.out::println);

src/org/j6toj8/fileio/fileimprovements/Improvements_WalkDepth.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ public class Improvements_WalkDepth {
1111
public static void main(String[] args) {
1212
// tag::code[]
1313
String userHome = System.getProperty("user.home");
14-
Path path = Paths.get(userHome, "arquivos");
14+
Path path = Paths.get(userHome, "files");
1515
System.out.println("Path: " + path);
1616

1717
try {
18-
System.out.println("\nArquivos e Links simbólicos até o segundo nível: ");
18+
System.out.println("\nSymbolic files and links to the second level: ");
1919
Files.walk(path, 2, FileVisitOption.FOLLOW_LINKS)
2020
.forEach(System.out::println);
2121
} catch (IOException e) {

0 commit comments

Comments
 (0)