2008-11-10 18 views
9

मैं क्लाइंट से अपने सर्वर पर फ़ाइल अपलोड करने के लिए कोड लिख रहा हूं और प्रदर्शन उतना तेज नहीं है जितना मुझे लगता है कि यह होना चाहिए।जावा का उपयोग कर फ़ाइल को स्थानांतरित करने का सबसे अच्छा तरीका क्या है?

मेरे पास वर्तमान कोड स्निपेट है जो फ़ाइल स्थानांतरण कर रहा है और मैं सोच रहा था कि मैं स्थानांतरण को कैसे बढ़ा सकता हूं।

कोड के सभी के बारे में क्षमा करें:

public static int[] getBytesFromStream(InputStream in, int size) throws IOException { 
    int[] b = new int[size]; 
    int count = 0; 
    while (count < size) { 
     b[count++] = in.read(); 
    } 
    return b; 
} 

और:

InputStream fileItemInputStream ; 
OutputStream saveFileStream; 
int[] buffer; 
while (fileItemInputStream.available() > 0) { 
    buffer = Util.getBytesFromStream(fileItemInputStream); 
    Util.writeIntArrToStream(saveFileStream, buffer); 
} 
saveFileStream.close(); 
fileItemInputStream.close(); 

util तरीके इस प्रकार हैं

public static void writeIntArrToStream(OutputStream out, int[] arrToWrite) throws IOException { 
    for (int i = 0; i < arrToWrite.length; i++) { 
     out.write(arrToWrite[i]); 
    } 
} 

उत्तर

16

एक समय में एक ही बाइट पढ़ना होगा बहुत अक्षम हो। आप available पर भी भरोसा कर रहे हैं, जो शायद ही कभी एक अच्छा विचार है। (अगर कोई बाइट्स वर्तमान में कर रहे हैं उपलब्ध यह 0 वापस आ जाएगी, लेकिन इससे अधिक आने के लिए हो सकता है।)

इस कोड के दाईं तरह एक धारा कॉपी करने के लिए है:

public void copyStream(InputStream input, OutputStream output) throws IOException 
{ 
    byte[] buffer = new byte[32*1024]; 
    int bytesRead; 
    while ((bytesRead = input.read(buffer, 0, buffer.length)) > 0) 
    { 
     output.write(buffer, 0, bytesRead); 
    } 
} 

(फोन करने वाले दोनों धाराओं को बंद करना चाहिए।)

+0

क्या मुझे जावा के हस्ताक्षरित बाइट्स में बहने वाली फ़ाइल में मेरे हस्ताक्षरित बाइट्स के बारे में चिंता करने की ज़रूरत नहीं है? – jjnguy

+0

वे एमपी 3 फाइलें हैं, अगर यह – jjnguy

+1

मायने रखता है, तो आप नहीं करते हैं। यह सिर्फ पढ़ना और लिखना है, किसी भी तरह के अंकगणित या परिवर्तन नहीं कर रहा है। –

संबंधित मुद्दे

 संबंधित मुद्दे