Sto imparando come utilizzare un InputStream. Stavo cercando di utilizzare il marchio per BufferedInputStream, ma quando provo a resettare ho queste eccezioni:Limite di lettura del limite del flusso di ingresso bufferizzato
java.io.IOException: Resetting to invalid mark
Penso che questo significa che la mia lettura del segno limite è fissato male. In realtà non so come impostare il limite di lettura in mark(). Ho provato così:
is = new BufferedInputStream(is);
is.mark(is.available());
Anche questo è sbagliato.
is.mark(16);
Anche questa genera la stessa eccezione. Come faccio a sapere quale limite di lettura devo impostare? Poiché leggerò diverse dimensioni di file dallo stream di input.
Il mio personale? Non usare il marchio - mentre sono sicuro che ce ne sia uno, devo ancora trovare una buona ragione per questo. Spesso, in primo luogo, è un segno di scarsa maneggevolezza. Tendo a pensare a un flusso non come un flusso a meno che non mi occupi della forma più grezza che ha. Preferirei avere un involucro stretto attorno ad esso che ottenga le sue informazioni, le impacchetta e invia quel pacchetto per l'elaborazione da qualche parte nell'app. – corsiKa
@glowcoder Grazie per il tuo commento. Come ho detto prima, sono nuovo nel lavorare con InputStream. In realtà stavo cercando di utilizzare il flusso di input due volte. Pensavo che questo fosse il modo di farlo. Segnare e resettare. Avete altri suggerimenti su come ottenere questo? –
Mark funziona in questo modo. Diciamo che il tuo flusso di input finirebbe per essere "A B C D E". Elabora 'A B' finora. (Ricorda, non sai ancora cosa sia "downstream"). Lo marchi. Poi leggi di più e ottieni 'C D E'. Lo guardi e dici "Aspetta, non posso elaborare' C D E' in questa modalità! " per qualsiasi ragione. Quindi tu dici "Vorrei davvero poter tornare ad elaborare' C D E' di nuovo ... quale puoi, dal momento che tu lo contrassegni() ".Devi semplicemente reimpostare() per riportare lo stream su dove era quando lo hai marcato e puoi leggerlo di nuovo come avresti fatto prima. – corsiKa