मैंने एक प्रोग्राम लिखा है जो कुछ सर्वरों से कुछ फाइलें डाउनलोड करता है।
वर्तमान में प्रोग्राम ठीक से काम करता है।
लेकिन मैं इसे फिर से शुरू करना चाहता हूं।
मैं इस तरह यह कर रहा हूँ लेकिन परिणाम फ़ाइल दूषित है:जावा: यूआरएल कनेक्शन में डाउनलोड करें
....
File fcheck=new File(SaveDir+"/"+filename);
if(resumebox.isSelected() && fcheck.exists()){
connection.setRequestProperty("Range", "Bytes="+(fcheck.length())+"-");
}
connection.setDoInput(true);
connection.setDoOutput(true);
BufferedInputStream in = new BufferedInputStream (connection.getInputStream());
pbar.setIndeterminate(false);
pbar.setStringPainted(true);
java.io.FileOutputStream fos ;
if(resumebox.isSelected()){
if(fcheck.exists()){
if(connection.getHeaderField("Accept-Ranges").equals("bytes")){
fos = new java.io.FileOutputStream(SaveDir+"/"+filename,true);
}else{
fos = new java.io.FileOutputStream(SaveDir+"/"+filename);
}
}else{
fos = new java.io.FileOutputStream(SaveDir+"/"+filename);
}
}else{
fos = new java.io.FileOutputStream(SaveDir+"/"+filename);
}
....
मैं एक सर्वर मुझे पता है कि समर्थन करता है फिर से शुरू पर यह परीक्षण कर रहा हूँ।
मैंने कुछ बाइट डाउनलोड किए। (72720)
फिर इसे फिर से शुरू करने का प्रयास किया।
फिर मैंने हेक्स संपादक के साथ फ़ाइल खोली, 72720 ऑफसेट पर पहली बाइट दोहराई गई:
बाइट 0-36: FLV ............. «........ ..onMetaData
बाइट्स 72720-72756: एफएलवी ............. «..........MMetaData
यह शुरुआत से डाउनलोड शुरू करता है!
जब मैं इसे भूलकर करता हूं, यह सामग्री-श्रेणी क्षेत्र द्वारा सही ढंग से और प्रतिक्रिया करता है!
"302 फाउंड" के साथ सर्वर प्रतिक्रियाएं और wget लॉग में "206 आंशिक सामग्री"।
समस्या का कारण बन सकता है "302 फाउंड"?
समस्या क्या है?
धन्यवाद।
दूसरी समस्या यह है कि यदि आपके पास/अन्य ब्लॉक है तो आपके पास अनावश्यक रूप से गहरा घोंसला है। '&&' ऑपरेटर का उपयोग करें। अर्थात। 'अगर (a && b && c) {fos = नया FOS (नाम, सत्य); } else {fos = नया एफओएस (नाम); } '। बस। सूखी। – BalusC
मैंने कोड संक्षेप में किया! उन लोगों में अगर अन्य ब्लॉक मैं कुछ संदेश बढ़ रहा हूं तो यह होना चाहिए। लेकिन आपकी प्रतिक्रिया के लिए धन्यवाद। – RYN
302 समस्या नहीं होनी चाहिए क्योंकि HTTPUrlConnection डिफ़ॉल्ट रूप से रीडायरेक्ट का पालन करता है। जब तक आप स्पष्ट रूप से रीडायरेक्ट बंद नहीं कर रहे हैं, जो मुझे संदेह है क्योंकि आप वास्तव में फ़ाइल सामग्री प्राप्त कर रहे हैं –