mark()
और reset()
कैसे ठीक से काम कर रहे हैं (नीचे कोड में), चरण-दर-चरण? मैंने अपना खुद का उदाहरण लिखने की कोशिश की लेकिन गलत मार्क अपवाद या उस तरह के समान फेंकना शुरू हो गया है, और मैं समझ नहीं पा रहा हूं कि इस कोड में चिह्न लगाने और रीसेट करने के तरीकों का क्या मतलब है क्योंकि मुझे इस के साथ या बिना अंतर दिखाई नहीं देता है।इनपुटस्ट्रीम, मार्क(), रीसेट()
import java.io.*;
class BufferedInputStreamDemo {
public static void main(String args[]) {
String s = "© is a copyright symbol, "
+ "however © isn't.\n";
byte buf[] = s.getBytes();
ByteArrayInputStream in = new ByteArrayInputStream(buf);
int c;
boolean marked = false;
//try_with_resources
try (BufferedInputStream f = new BufferedInputStream(in)) {
while ((c = f.read()) != -1) {
switch (c) {
case '&':
if (!marked) {
f.mark(32);
marked = true;
} else {
marked = false;
}
break;
case ';':
if (marked) {
marked = false;
System.out.print("(c)");
} else
System.out.print((char) c);
break;
case ' ':
if (marked) {
marked = false;
f.reset();
System.out.print("&");
} else
System.out.print((char) c);
break;
default:
if (!marked)
System.out.print((char) c);
break;
}
}
} catch (IOException e) {
System.out.println("I/O Error: " + e);
}
}
}
क्या अपवाद फेंक दिया जा रहा है? क्या आपके पास एक स्टैक ट्रेस है? कृपया, अपने प्रश्न पर अधिक विशिष्ट हो। – Lion
अपवाद को फेंक दिया गया है 'I/O त्रुटि: java.io.IOException: अमान्य चिह्न पर रीसेट करना', लेकिन मैंने लिखा कि उस अपवाद को किसी अन्य उदाहरण में फेंक दिया जा रहा है। मुख्य रूप से मैं पूछ रहा हूं कि चिह्न क्या है (32) और ** इस उदाहरण ** में रीसेट करना। – ashur
@ user1165499 इस कोड को कैसे काम कर रहा है, इस बारे में विवरण के लिए मेरा उत्तर देखें, और मुझे आपके अन्य उदाहरण में समस्या का संदेह है। – dan