मैं जावा मेल एपीआई का उपयोग करके एक अनुलग्नक डाउनलोड कर रहा हूं और जब भी नेटवर्क स्थिति में कोई छोटा बदलाव होता है, तो मेरा ऐप फंस जाता है और मुझे इसे पुनरारंभ करना पड़ता है, यह भी क्रैश नहीं होता है।इनपुटस्ट्रीम - नेटवर्क परिवर्तनों से निपटना
InputStream is = bodyPart.getInputStream();
String fileName = MimeUtility.decodeText(bodyPart.getFileName());
// Downloading the file
File f = new File(Constants.getPath() + fileName);
try {
FileOutputStream fos;
fos = new FileOutputStream(f);
byte[] buf = new byte[8*1024];
int bytesRead;
while ((bytesRead = is.read(buf)) != -1) {
fos.write(buf, 0, bytesRead);
}
fos.close();
}
इस मुद्दे से निपटने के लिए सबसे अच्छा तरीका क्या है: यह कोड स्निपेट है? धन्यवाद।
'बुफर्डइनपूटस्ट्रीम' के साथ इनपुट स्ट्रीम को रैपर करने का प्रयास करें और देखें कि 'skip() 'विधि यहां समर्थित है (क्या यह IOException फेंकती है या नहीं)। यदि हां, तो आपके पास पिछले डाउनलोड को फिर से शुरू करने की क्षमता होगी। –
हाय, धन्यवाद, यह IOException फेंक देता है। क्या आप कृपया मुझे बताएंगे कि मैं पिछले डाउनलोड को फिर से कैसे शुरू कर सकता हूं और यह इस तथ्य से कैसे संबंधित है कि ऐप फ्रीज करता है? – Tsikon
यदि यह 'skip()' का समर्थन करता है, तो यह 'पिछले डाउनलोड को फिर से शुरू करने' का समर्थन करेगा। हालांकि, एकमात्र विकल्प मैं सोच सकता हूं कि 'is.read()' पर एक टाइमआउट होना है, और यदि यह टाइमआउट अवधि से अधिक होता है, तो आपको डाउनलोड को समाप्त करना चाहिए और फिर से शुरू करना चाहिए। यह SO प्रश्न देखें: http://stackoverflow.com/questions/804951/is-it-possible-to-read-from-a-inputstream-with-a-timeout –