Domanda

Sto avendo un problema la lettura da un flusso di input Java. Ho un buffer di dimensioni 1024 e un flusso di input di dimensione 29k-31k. Ho letto l'inputStream in un ciclo, ma ho solo 29 byte per la prima lettura, 39 per la seconda lettura, e nulla dopo. Lo stesso comportamento si ripete per diverse InputStreams. (Sto scrivendo i dati in un flusso di output, ma non vedo come questo possa influenzare la prima lettura)

        int bytesRead = 0;
        byte[] byteBuf = new byte[1024];

        OutputStream fileStream = FileUtil.openFileForWrite(saveTo);

        bytesRead = reader.read(byteBuf);
        while(bytesRead!=-1){
            fileStream.write(byteBuf, 0, bytesRead);
            bytesRead = reader.read(byteBuf);
        }

Che cosa mi manca?

Ogni aiuto è apprezzato:)

È stato utile?

Soluzione

Dove vuoi arrivare il flusso di input da? Come fai a sapere che si tratta di 29K-31K?

Il tuo codice sembra ragionevole per me, anche se io in genere la struttura del ciclo leggermente diverso al fine di evitare la duplicazione della chiamata read.

Altri suggerimenti

Hai provato a usare readline () invece di read ()?

Path file = ...;
InputStream in = null;
try {
    in = file.newInputStream();
    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    String line = null;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException x) {
    System.err.println(x);
} finally {
    if (in != null) in.close();
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top