Tôi đang tải xuống tệp đính kèm bằng API thư Java và bất kỳ khi nào có thay đổi nhỏ về trạng thái mạng, ứng dụng của tôi bị kẹt và tôi phải khởi động lại, thậm chí không bị lỗi. Đây là đoạn mã:InputStream - Xử lý các thay đổi mạng
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();
}
Cách tốt nhất để giải quyết vấn đề này là gì? Cảm ơn.
Cố gắng bao bọc luồng đầu vào bằng 'BufferedInputStream' và xem liệu phương thức' skip() 'có được hỗ trợ ở đây hay không (Nó có ném IOException hay không). Nếu có, thì bạn sẽ có khả năng tiếp tục tải xuống trước đó. –
Xin chào, cảm ơn, Nó ném IOException. Bạn vui lòng cho tôi biết làm thế nào tôi có thể tiếp tục tải xuống trước đó và làm thế nào nó liên quan đến thực tế là các ứng dụng bị đóng băng? – Tsikon
Nếu nó hỗ trợ 'skip()', thì nó sẽ hỗ trợ 'Tiếp tục tải xuống trước đó'. Tuy nhiên, tùy chọn duy nhất tôi có thể nghĩ là có một thời gian chờ trên 'is.read()', và nếu nó xảy ra vượt quá khoảng thời gian chờ, sau đó bạn nên chấm dứt việc tải xuống và bắt đầu lại. Xem câu hỏi SO này: http://stackoverflow.com/questions/804951/is-it-possible-to-read-from-a-inputstream-with-a-timeout –