Java a-t-il une méthode simple pour lire une ligne d'une intrigue sans tampon? BufferedReader ne convient pas à mes besoins car je dois transférer des données texte et binaires par la même connexion à plusieurs reprises et que la mise en mémoire tampon gêne simplement. P>
3 Réponses :
Vous pouvez essayer la classe de scanner: http : //docs.oracle.com/javase/1.5.0/docs/api/java/util/scanner.html P>
Cependant, ce tampon peut STRT> l'entrée si aucun nouveau-ligne n'est présent: P>
Étant donné que cette méthode continue de rechercher à travers l'entrée à la recherche d'une ligne
Séparateur, il peut tamponner toute l'entrée de la recherche de la ligne de sauter si non
Les séparateurs de lignes sont présents. p>
blockQuote>
Scanner tampons l'entrée même après la nouvelle ligne :(
Scanner CODE> TAMPS PASSER LA NOUVELLINE. J'ai un
stringreader code> avec sept lignes et
scanner code> les tampons tout en un coup.
Vous ferez peut-être mieux de lire les intrants avec une bufferedreader et d'ajouter les lignes de lecture à une chaîne. P>
Vous pouvez ensuite manipuler la chaîne comme vous le souhaitez sans vous soucier de la mise en mémoire tampon. P>
Le problème est que je n'ai pas de contrôle comment Bufferedreader lit l'entrée. Il peut lire une ligne et un morceau de données passée. Je ne veux pas ça.
@Ree, je pense que ce scanner ne fait que tamponner en arrière, pas en avant.
Finalement, l'a finalement fait lire directement des octets après l'octet de l'introuve sans envelopper l'introuvrette. Tout ce que j'ai essayé, comme Scanner et InputStreamReader, se lit en avant (tampons) l'entrée: (
Je suppose que j'ai raté quelques cas comme \ r. P>
public static String readLine(InputStream inputStream) throws IOException { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); int c; for (c = inputStream.read(); c != '\n' && c != -1 ; c = inputStream.read()) { byteArrayOutputStream.write(c); } if (c == -1 && byteArrayOutputStream.size() == 0) { return null; } String line = byteArrayOutputStream.toString("UTF-8"); return line; }
À travers des données binaires, vous n'avez pas de lignes, non? Que diriez-vous de reconnaître si vos données sont du texte ou du binaire?
Je les ai. La demande commence par les lignes de texte qui la décrivait et est parfois suivie de données binaires.
Dupliqué possible: Stackoverflow.com/Questtions/25215564/...