web-dev-qa-db-fra.com

Java - Lire la ligne en utilisant InputStream

J'utilise InputStream pour lire certaines données, donc je veux lire les caractères jusqu'à la nouvelle ligne ou '\ n'.

12
Ahmad Naoum

Vous devez utiliser BufferedReader avec FileInputStreamReader si votre lecture à partir d'un fichier

BufferedReader reader = new BufferedReader(new FileInputStreamReader(pathToFile));

ou avec InputStreamReader si vous lisez à partir d'un autre InputStream

BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

Utilisez ensuite sa méthode readLine () dans une boucle

while(reader.ready()) {
     String line = reader.readLine();
}

Mais si vous aimez vraiment InputStream, vous pouvez utiliser une boucle comme celle-ci

InputStream stream; 
char c; 
String s = ""; 
do {
   c = stream.read(); 
   if (c == '\n')
      break; 
   s += c + "";
} while (c != -1);
35
Tommaso Pasini

Pour les fichiers, ce qui suit vous permettra de lire chaque ligne:

import Java.io.FileNotFoundException;
import Java.util.Scanner;
import Java.io.File;

public static void readText throws FileNotFoundException(){

     Scanner scan = new Scanner(new File("filename.txt"));

     while(scan.hasNextLine()){
         String line = scan.nextLine();

     }
}
1
Rana

Il est possible de lire le flux d'entrée avec BufferedReader et avec Scanner. Si vous n'avez pas de bonne raison, il est préférable d'utiliser BufferedRead (pour une large discussion BufferedReader vs Scanner voir .

Je suggère également d'utiliser le lecteur tamponné avec try-with-resources pour vous assurer que la ressource est fermée automatiquement. voir

Voir le code suivant

try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
        while (reader.ready()) {
            String line = reader.readLine();
            System.out.println(line);
        }
    }catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
0
Memin