J'utilise InputStream pour lire certaines données, donc je veux lire les caractères jusqu'à la nouvelle ligne ou '\ n'.
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);
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();
}
}
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();
}