Sunucudaki bir veritabanını indirmek ve Android uygulamamda kopyalamak için OkHttpClient
kullanıyorum, istek tamam ve iyi içeriği aldım.Android OkHttp InputStream java.IOException.closed
Ancak, dosyama byteStream
yazmayı denediğimde java.IOException.closed
aldım. Neyi yanlış yaptığımı biliyor musun?
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);
}
}
Ben de okumaya çalıştım benim ile ByteStream
bir BufferedSink
ama sonuç aynı
BufferedSink sink = Okio.buffer(Okio.sink(databasePath));
sink.writeAll(httpResponse.body().source());
sink.close();
StackTrace oldu: akışı neden kapatıldığı
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)
Tam yığın izinizi gönderebilir misiniz lütfen? – apmartin1991
Akışı kapatabilecek herhangi bir engelleyici kullanıyor musunuz? –