HOWTO · Java

Leggere un file in una stringa in Java

Dai un'occhiata ai diversi metodi con cui possiamo leggere e convertire il contenuto del file in una stringa Java

In questa pagina

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