सबसे पहले, यह सर्वलेट से संबंधित नहीं है। यह सामान्य रूप से जावा आईओ पर लागू होता है। आपके पास सिर्फ InputStream
और OutputStream
के बाद है।
जवाब देने के लिए के रूप में, आप केवल एक है जो इस बारे में सोचा नहीं कर रहे हैं। interwebs पर आप अन्य लोगों के बारे में सोचा, लेकिन परीक्षण करने के लिए प्रयास ले लिया पा सकते हैं/यह बेंचमार्क खुद को:
एक 256K बाइट सरणी के साथ
सामान्य तौर पर, एक FileChannel
जिसे एक लिपटे ByteBuffer
के माध्यम से पढ़ा जाता है और सीधे बाइट सरणी से लिखा जाता है वह सबसे तेज़ तरीका है। दरअसल, एनआईओ।
FileInputStream input = new FileInputStream("/path/to/file.ext");
FileChannel channel = input.getChannel();
byte[] buffer = new byte[256 * 1024];
ByteBuffer byteBuffer = ByteBuffer.wrap(buffer);
try {
for (int length = 0; (length = channel.read(byteBuffer)) != -1;) {
System.out.write(buffer, 0, length);
byteBuffer.clear();
}
} finally {
input.close();
}
NIO एक जादुई गोली जो सब कुछ कब तेजी आधारित बनाता नहीं है। वास्तव में, यदि आप अपने कोड को अधिक _scalable_ बनाने की आवश्यकता है (उदाहरण के लिए अधिक कनेक्शन को संभालने वाले कम थ्रेड)। सिंगल थ्रेडेड कोड के लिए, आईओ लगभग हमेशा अच्छा या बेहतर होता है (इस नियम के लिए अपवाद फ़ाइल स्थानांतरण में फ़ाइल हो सकता है)। – jtahlborn