2010-05-13 23 views
7

पर एक फ़ाइल के रूप में सहेजी गई है मेरे पास एक छवि है जो ByteArrayInputStream के रूप में है। मैं इसे लेना चाहता हूं और इसे कुछ ऐसा करना चाहता हूं जिसे मैं अपने फाइल सिस्टम में किसी स्थान पर सहेज सकूं।मैं ByteArrayInputStream कैसे ले सकता हूं और इसकी सामग्री फाइल सिस्टम

मैं सर्कल में घूम रहा हूं, क्या आप कृपया मेरी मदद कर सकते हैं।

+0

मुझे विश्वास नहीं है कि यह कार्य कितना परेशान है। – clizzin

उत्तर

12

आप पहले से ही अपाचे commons-io का उपयोग कर रहे हैं, तो आप के साथ ऐसा कर सकते हैं:

IOUtils.copy(byteArrayInputStream, new FileOutputStream(outputFileName)); 
+0

हां। बहुत साफ – SingleShot

+0

यह बहुत अच्छा है, लेकिन मैंने पाया कि मुझे कॉपी करने के लिए कॉल के बाहर फ़ाइलआउटपुटस्ट्रीम बनाने की आवश्यकता है ताकि मैं इसे बंद कर सकूं। कुछ IOUtils बफर फ्लश करते हैं, लेकिन मुझे यह समस्या हो रही थी कि आउटपुट फाइलें कभी-कभी खुली नहीं थीं। एक बार जब मैंने FileOutputStream पर बंद करने के लिए एक कॉल जोड़ा, तो यह बहुत अच्छा काम किया। कुल मिलाकर, मैं बहुत खुश हूं मुझे आईओटीटी सामान मिला, मैं इसे अन्य चीजों के लिए भी इस्तेमाल कर रहा हूं। – titania424

2

आप नीचे दिए गए कोड का उपयोग कर सकते हैं:

ByteArrayInputStream input = getInputStream(); 
FileOutputStream output = new FileOutputStream(outputFilename); 

int DEFAULT_BUFFER_SIZE = 1024; 
byte[] buffer = new byte[DEFAULT_BUFFER_SIZE]; 
long count = 0; 
int n = 0; 

n = input.read(buffer, 0, DEFAULT_BUFFER_SIZE); 

while (n >= 0) { 
    output.write(buffer, 0, n); 
    n = input.read(buffer, 0, DEFAULT_BUFFER_SIZE); 
} 
+0

धन्यवाद गौरव, अब इसे आजमाएं। – Ankur

5
InputStream in = //your ByteArrayInputStream here 
OutputStream out = new FileOutputStream("filename.jpg"); 

// Transfer bytes from in to out 
byte[] buf = new byte[1024]; 
int len; 
while ((len = in.read(buf)) > 0) { 
    out.write(buf, 0, len); 
} 
in.close(); 
out.close(); 
-3
ByteArrayInputStream stream = <<Assign stream>>; 
    byte[] bytes = new byte[1024]; 
    stream.read(bytes); 
    BufferedWriter writer = new BufferedWriter(new FileWriter(new File("FileLocation"))); 
    writer.write(new String(bytes)); 
    writer.close(); 

बफर लेखक प्रदर्शन में सुधार होगा FileWriter की तुलना में फाइलें लिखने में।

+1

लेखक चरित्र फ़ाइलों के लिए हैं, बाइनरी फाइल नहीं –