2015-10-28 8 views
5

मैं सर्वर पर डेटाबेस डाउनलोड करने के लिए OkHttpClient का उपयोग करता हूं और इसे अपने एंड्रॉइड एप्लिकेशन पर कॉपी करने के लिए अनुरोध करता हूं, अनुरोध ठीक है और मुझे अच्छी सामग्री मिलती है।एंड्रॉइड ओकेएचटीपी इनपुटस्ट्रीम java.IOException.closed

हालांकि जब मैं अपनी फ़ाइल में byteStream लिखने का प्रयास करता हूं तो मुझे java.IOException.closed मिलता है। क्या आप जानते हैं कि मैं क्या गलत कर रहा हूं?

Response httpResponse = webApiClient.execute(
    new WebApiRequest(WebApiMethod.DB_DOWNLOAD), context); 

if (httpResponse.code() == 200) 
{ 
    try 
    { 
     InputStream inputStream = httpResponse.body().byteStream(); 
     File databasePath = context.getDatabasePath(Constant.DATABASE_NAME); 
     FileOutputStream output = new FileOutputStream(databasePath); 
     int bufferSize = 1024; 
     byte[] buffer = new byte[bufferSize]; 
     int len; 
     while ((len = inputStream.read(buffer)) != -1) 
     { 
      output.write(buffer, 0, len); 
     } 
     success = true; 
    } 
    catch (Exception exc) 
    { 
     Utils.DisplayException(exc, context); 
    } 
} 

मैं भी पढ़ने के लिए करने की कोशिश की मेरी साथ ByteStream एक BufferedSink लेकिन परिणाम एक ही

BufferedSink sink = Okio.buffer(Okio.sink(databasePath)); 
sink.writeAll(httpResponse.body().source()); 
sink.close(); 

StackTrace था:

java.io.IOException: closed 
    at okio.RealBufferedSource$1.read(RealBufferedSource.java:367) 
    at java.io.InputStream.read(InputStream.java:162) 
    at com.org.dbconn.LoginActivity$DbDownloadTask.doInBackground(LoginActivity.java:475) 
    at com.org.dbconn.LoginActivity$DbDownloadTask.doInBackground(LoginActivity.java:436) 
    at android.os.AsyncTask$2.call(AsyncTask.java:288) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
    at java.lang.Thread.run(Thread.java:818) 
+1

क्या आप अपना पूरा स्टैक ट्रेस पोस्ट कर सकते हैं? – apmartin1991

+1

क्या आप किसी भी इंटरसेप्टर का उपयोग कर रहे हैं जो स्ट्रीम बंद कर सकता है? –

उत्तर

3

मैं कुछ परीक्षण के लिए क्यों धारा बंद हो गया, , मैं System.out.println के साथ अपने आउटपुट स्ट्रिंग की सामग्री की जांच कर रहा था, लेकिन जब आप आउटपुट को पढ़ते या मुद्रित करते हैं तो यह स्वचालित रूप से स्ट्रीम बंद हो जाता है, इसलिए मुझे एक मिलता है त्रुटि।

निष्कर्ष में, स्ट्रीम के साथ याद रखने की एक बात: आउटपुट स्ट्रीमिंग या प्रिंट करना इसे बंद कर देगा।

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