Files and Paths
Read Lines
Reading a file as lines makes each record available for a loop.
line list
Files.readAllLines returns a List where each element is one line from the file.
parse loop
A parse loop converts text records into the numeric values the program needs.
Read Lines
ReadLines.java
Replay: real traced execution (multi-file project)
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
public class ReadLines {
public static void main(String[] args) throws Exception {
int bonus = 0;
Path path = Path.of("java21_lines.txt");
Files.write(path, List.of("3", "4", String.valueOf(bonus)));
List<String> lines = Files.readAllLines(path);
int sum = 0;
for (String line : lines) {
sum += Integer.parseInt(line);
}
Files.deleteIfExists(path);
System.out.println("lines=" + lines.size() + " sum=" + sum);
}
}
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
public class ReadLines {
public static void main(String[] args) throws Exception {
int bonus = 2;
Path path = Path.of("java21_lines.txt");
Files.write(path, List.of("3", "4", String.valueOf(bonus)));
List<String> lines = Files.readAllLines(path);
int sum = 0;
for (String line : lines) {
sum += Integer.parseInt(line);
}
Files.deleteIfExists(path);
System.out.println("lines=" + lines.size() + " sum=" + sum);
}
}
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
public class ReadLines {
public static void main(String[] args) throws Exception {
int bonus = 5;
Path path = Path.of("java21_lines.txt");
Files.write(path, List.of("3", "4", String.valueOf(bonus)));
List<String> lines = Files.readAllLines(path);
int sum = 0;
for (String line : lines) {
sum += Integer.parseInt(line);
}
Files.deleteIfExists(path);
System.out.println("lines=" + lines.size() + " sum=" + sum);
}
}
bonus ← 0, path ← java21_lines.txt, lines ← [3, 4, 0], sum ← 0
5public class ReadLines {6 public static void main(String[] args) throws Exception {7 int bonus→ 0 = 0; //@bonus=2, 58 Path path→ java21_lines.txt = Path.of("java21_lines.txt");9 Files.write(pathjava21_lines.txt, List.of("3", "4", String.valueOf(bonus0)));1011 List<String> lines→ [3, 4, 0] = Files.readAllLines(pathjava21_lines.txt);12 int sum→ 0 = 0;13 for (String line : lines) {sum ← 3
pass 1 of 312int sum = 0;13for (String line3 : lines[3, 4, 0]) {14 sum→ 3 += Integer.parseInt(line3);15}All 3 passes — pass 1 is the card above pass linesum1 3 0 → 3 2 4 3 → 7 3 0 7 Files.deleteIfExists(path);
17 Files.deleteIfExists(pathjava21_lines.txt);18 System.out.println("lines=" + lines.size() + " sum=" + sum7);19}outputlines=3 sum=7
bonus ← 2, path ← java21_lines.txt, lines ← [3, 4, 2], sum ← 0
5public class ReadLines {6 public static void main(String[] args) throws Exception {7 int bonus→ 2 = 2;8 Path path→ java21_lines.txt = Path.of("java21_lines.txt");9 Files.write(pathjava21_lines.txt, List.of("3", "4", String.valueOf(bonus2)));1011 List<String> lines→ [3, 4, 2] = Files.readAllLines(pathjava21_lines.txt);12 int sum→ 0 = 0;13 for (String line : lines) {sum ← 3
pass 1 of 312int sum = 0;13for (String line3 : lines[3, 4, 2]) {14 sum→ 3 += Integer.parseInt(line3);15}All 3 passes — pass 1 is the card above pass linesum1 3 0 → 3 2 4 3 → 7 3 2 7 → 9 Files.deleteIfExists(path);
17 Files.deleteIfExists(pathjava21_lines.txt);18 System.out.println("lines=" + lines.size() + " sum=" + sum9);19}outputlines=3 sum=9
bonus ← 5, path ← java21_lines.txt, lines ← [3, 4, 5], sum ← 0
5public class ReadLines {6 public static void main(String[] args) throws Exception {7 int bonus→ 5 = 5;8 Path path→ java21_lines.txt = Path.of("java21_lines.txt");9 Files.write(pathjava21_lines.txt, List.of("3", "4", String.valueOf(bonus5)));1011 List<String> lines→ [3, 4, 5] = Files.readAllLines(pathjava21_lines.txt);12 int sum→ 0 = 0;13 for (String line : lines) {sum ← 3
pass 1 of 312int sum = 0;13for (String line3 : lines[3, 4, 5]) {14 sum→ 3 += Integer.parseInt(line3);15}All 3 passes — pass 1 is the card above pass linesum1 3 0 → 3 2 4 3 → 7 3 5 7 → 12 Files.deleteIfExists(path);
17 Files.deleteIfExists(pathjava21_lines.txt);18 System.out.println("lines=" + lines.size() + " sum=" + sum12);19}outputlines=3 sum=12