0

サーバーからビデオをダウンロードするためにokhttpを使用しています。エラーも例外もありませんが、ファイルはどこにでもダウンロードされているわけではありませんが、そのままのようです。

コードは次のとおりです。

OkHttpClient httpClient = new OkHttpClient();
Call call = httpClient.newCall(new Request.Builder().url("http://res.cloudinary.com/demo/video/upload/v1427018743/ygzxwxmflekucvqcrb8c.mp4").get().build());
 try {
        File file = new File(getCacheDir(), user_Videos.get(i).video_title+ ".mp4");
        OutputStream out = new FileOutputStream(file);
        Response response = call.execute();
        if (response.code() == 200) {
           InputStream inputStream = null;
           try {
                inputStream = response.body().byteStream();
                byte[] buff = new byte[1024 * 8];
                long downloaded = 0;
                long target = response.body().contentLength();

                 publishProgress(0L, target);
                 while (true) {
                      int readed = inputStream.read(buff);
                       if (readed == -1) {
                           break;
                                        }
                          //write buff
                     downloaded += readed;

              try {
                   out.write(buff,0,readed);

                  } catch (Exception e) {
                       e.printStackTrace();
                                        }
                   publishProgress(downloaded, target);
                     if (isCancelled()) {
                                            return false;
                                        }
                                    }
                                    return downloaded == target;
                                } catch (IOException ignore) {
                                    return false;
                                } finally {
                                    if (inputStream != null) {
                                        out.flush();
                                        out.close();
                                        inputStream.close();
                                    }
                                }
                            } else {
                                return false;
                            }
                        } catch (IOException e) {
                            e.printStackTrace();
                            return false;
                        }

進行状況は正しく表示されていますが、ビデオがディレクトリに表示されていません。

ありがとう。

4

1 に答える 1

0

したがって、私のコードには問題はありませんが、パスには問題がありません。パス/ディレクトリについて考えさせてくれた@greenappsに感謝します。

基本的に、パスをキャッシュではなく実際のパスに変更するだけです。これがビデオです。

この行を変更しました

 File file = new File(getCacheDir(), user_Videos.get(i).video_title  + ".mp4");

これに

 File file = new File(Environment.getExternalStorageDirectory(), user_Videos.get(i).video_title+ ".mp4");

手がかりをくれた@greenappsに感謝します。

于 2016-04-12T05:38:45.893 に答える