Angenommen, ich habe eine Methode, die einen InputStream aufnimmt.Auswirkung auf den ursprünglichen InputStream nach dem Umbrechen mit BufferedInputStream
Diese Methode muss diesen InputStream mit einem BufferedInputStream umhüllen, um die Funktion zum Markieren und Zurücksetzen zu verwenden. Der übergebene InputStream wird jedoch möglicherweise weiterhin vom Aufrufer der Methode verwendet.
public static void foo(InputStream is) throws Exception {
BufferedInputStream bis = new BufferedInputStream(is);
int b = bis.read();
}
public static void main(String[] args) {
try {
InputStream is = new FileInputStream(someFile);
foo(is);
int b = is.read(); // return -1
}catch (Exception e) {
e.printStackTrace();
}
}
Meine Fragen ist: Was genau das Original Input passieren, wenn die BufferedInputStream gelesen (oder initialisiert)?
Meine Annahme ist, dass der ursprüngliche InputStream auch weitergeht, wenn der BufferedInputStream gelesen wird. Nach dem Debuggen meines Codes habe ich jedoch festgestellt, dass der InputStream beim Lesen -1 zurückgibt.
Wenn die ursprüngliche Input nach einem solchen Verfahren nicht lesbar ist, wie soll ich tun, um mein Ziel zu erreichen:
InputStream is;
foo(is); // Method only take in generic InputStream object
// Processing of the passed in InputStream object require mark and reset functionality
int b = is.read(); // Return the next byte after the last byte that is read by foo()
EDIT: Ich nehme an, was ich fragen, ganz allgemein ist und deshalb erfordert viel der Arbeit. Was das betrifft, an dem ich arbeite, brauche ich nicht die volle Markierung & Reset-Fähigkeit, so dass ich eine kleine Arbeit gefunden habe. Ich werde jedoch den zweiten Teil der Frage hier lassen, also zögern Sie nicht, dieses Problem zu versuchen :).