Leggere un file in una stringa in Java

Rupam Yadav 12 ottobre 2023
  1. Files.readString() per leggere una stringa da un file in Java 11
  2. Files.lines(file_path) per leggere il file in una stringa in Java 8
  3. Files.readAllLines() per leggere la stringa dal file in Java 7
  4. BufferedReader.readLine per leggere una stringa da un file
Leggere un file in una stringa in Java

Introdurremo come leggere il contenuto di un file e poi convertirlo in una stringa Java.

Di seguito è riportato il file testFile.txt, che include alcuni contenuti che vogliamo leggere come una stringa Java.

A B C D 1 2 3

Files.readString() per leggere una stringa da un file in Java 11

Java 11 introduce un nuovo metodo Files.readString() che ci permette di leggere il file facilmente e senza scrivere molto codice.

import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Main {
  public static void main(String[] args) {
    Path path = Paths.get("/Projects/testFile.txt");

    try {
      String content = Files.readString(path);
      System.out.println(content);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Produzione:

A
B
C
D
1
2
3

Files.lines(file_path) per leggere il file in una stringa in Java 8

L’API Stream è stata introdotta in Java 8 che elabora il dato insieme di dati in vari modi.

La classe Files, come parte del pacchetto java.NIO, contiene un metodo lines() che produce Stream<String> o un flusso di stringhe da un file di testo.

Proviamo a convertire il contenuto del file in una stringa Java utilizzando Stream API.

import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {
  public static void main(String[] args) {
    try {
      Path path = Paths.get("/Projects/testFile.txt");
      Stream<String> lines = Files.lines(path);

      String content = lines.collect(Collectors.joining(System.lineSeparator()));
      System.out.println(content);
      lines.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Produzione:

A
B
C
D
1
2
3
Nota

Ricorda sempre di chiudere lo stream dopo averlo utilizzato. Notare il lines.close().

Assicura che lo stream venga chiuso una volta che il contenuto è stato stampato.

Files.readAllLines() per leggere la stringa dal file in Java 7

Leggere i file non è stato così facile fino a Java 7, che ha portato il nuovo metodo nel pacchetto java.nio. È il metodo Files.readAllLines() che restituisce una lista di stringhe dal file. Ogni stringa rappresenta una singola riga del file.

import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;

public class Main {
  public static void main(String[] args) {
    try {
      Path path = Paths.get("/Projects/testFile.txt");
      List<String> contentList = Files.readAllLines(path, StandardCharsets.UTF_8);
      System.out.println(contentList);

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Produzione:

[A, B, C, D, 1, 2, 3]

BufferedReader.readLine per leggere una stringa da un file

Possiamo anche ottenere il contenuto del nostro file usando la classe BufferedReader, che legge il testo da un flusso di input.

import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {
  public static void main(String[] args) throws IOException {
    String path = "/Projects/testFile.txt";

    try (BufferedReader br = new BufferedReader(new FileReader(path))) {
      String line = br.readLine();
      StringBuilder sb = new StringBuilder();

      while (line != null) {
        sb.append(line).append("\n");
        line = br.readLine();
      }

      String fileAsString = sb.toString();
      System.out.println(fileAsString);
    }
  }
}

Produzione:

A
B
C
D
1
2
3
Autore: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Articolo correlato - Java String

Articolo correlato - Java File