InputStream leggere non leggere i dati
-
12-09-2019 - |
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:)
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();
}