मेरे ऐप में, मैं सॉकेट का उपयोग कर क्लाइंट से एक फाइल भेज रहा हूं। दूसरी ओर, दूसरा क्लाइंट इनपुटस्ट्रीम का उपयोग करके फ़ाइल प्राप्त करता है और फिर बफ़रडऑटपुटस्ट्रीम सिस्टम में फ़ाइल को सहेजता है।
मुझे नहीं पता क्यों, फ़ाइल पूरी तरह से प्रेषित नहीं है। मुझे लगता है कि यह नेटवर्क अधिभार के कारण है, वैसे भी, मुझे नहीं पता कि इसे कैसे हल किया जाए।
ट्रांसमीटर है:
Log.d(TAG,"Reading...");
bufferedInputStream.read(byteArrayFile, 0, byteArrayFile.length);
Log.d(TAG, "Sending...");
bufferedOutputStream.write(byteArrayFile,0,byteArrayFile.length);
bufferedOutputStream.flush();
रिसीवर है:
bufferedOutputStream=new BufferedOutputStream(new FileOutputStream(file));
byteArray=new byte[fileSize];
int currentOffset = 0;
bytesReaded = bufferedInputStream.read(byteArray,0,byteArray.length);
currentOffset=bytesReaded;
do {
bytesReaded = bufferedInputStream.read(byteArray, currentOffset, (byteArray.length-currentOffset));
if(bytesReaded >= 0){ currentOffset += bytesLeidos;
}
} while(bytesReaded > -1 && currentOffset!=fileSize);
bufferedOutputStream.write(byteArray,0,currentOffset);
1 उत्तर
आप यह नहीं बताते कि filesize
कहां से आया, लेकिन इस कोड के साथ कई समस्याएं हैं। उल्लेख करने के लिए बहुत सारे। यह सब फेंक दें और DataInputStream.readFully()
का प्रयोग करें। या निम्न प्रतिलिपि लूप का उपयोग करें, जिसके लिए फ़ाइल के आकार के बफर की आवश्यकता नहीं है, एक तकनीक जो स्केल नहीं करती है, मानती है कि फ़ाइल का आकार int
में फिट बैठता है, और विलंबता जोड़ता है:
byte[] buffer = new byte[8192];
int count;
while ((count = in.read(buffer)) > 0)
{
out.write(buffer, 0, count);
}
इसे दोनों सिरों पर इस्तेमाल करें। यदि आप एक ही कनेक्शन के माध्यम से कई फाइलें भेज रहे हैं तो यह अधिक जटिल हो जाता है, लेकिन आपने ऐसा नहीं कहा है।
out
एक OutputStream
होगा। मुझे नहीं लगा कि यह बताने की जरूरत है।
संबंधित सवाल
नए सवाल
android
एंड्रॉइड Google का मोबाइल ऑपरेटिंग सिस्टम है, जिसका उपयोग प्रोग्रामिंग या डिजिटल डिवाइस (स्मार्टफोन, टैबलेट, ऑटोमोबाइल्स, टीवी, वियर, ग्लास, IoT) को विकसित करने के लिए किया जाता है। एंड्रॉइड से संबंधित विषयों के लिए, एंड्रॉइड-विशिष्ट टैग जैसे कि एंड्रॉइड-इरादे, एंड्रॉइड-गतिविधि, एंड्रॉइड-एडॉप्टर आदि का उपयोग करें। विकास या प्रोग्रामिंग के अलावा अन्य प्रश्नों के लिए, लेकिन एंड्रॉइड फ्रेमवर्क से संबंधित हैं, इस लिंक का उपयोग करें: https: // android.stackexchange.com।