7
votes

Lignes de lecture d'une intrigue sans tampon

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.


3 commentaires

À 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/...


3 Réponses :


0
votes

Vous pouvez essayer la classe de scanner: http : //docs.oracle.com/javase/1.5.0/docs/api/java/util/scanner.html

Cependant, ce tampon peut l'entrée si aucun nouveau-ligne n'est présent:

É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.


2 commentaires

Scanner tampons l'entrée même après la nouvelle ligne :(


Scanner TAMPS PASSER LA NOUVELLINE. J'ai un stringreader avec sept lignes et scanner les tampons tout en un coup.



-3
votes

Vous ferez peut-être mieux de lire les intrants avec une bufferedreader et d'ajouter les lignes de lecture à une chaîne.

Vous pouvez ensuite manipuler la chaîne comme vous le souhaitez sans vous soucier de la mise en mémoire tampon.


2 commentaires

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.



7
votes

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;
}


0 commentaires