2016-09-29 7 views
0

アンドロイドからpdfファイルをダウンロードして内部または外部メモリ内のフォルダに保存するにはアンドロイドアプリを作成してください。 finshingなしで停止します。ファイルサイズは1.1MBで、750kbまでしかダウンロードできません。今問題は、ファイルが完全にダウンロードされているかどうか、つまりダウンロードされていると表示されているのですが、実際にはそれがnot.soなので、ファイルが完全にダウンロードされたかどうかを確認できるように、ダウンロードを再開します。 誰もが任意の合理的なサーバーのレスポンスヘッダがうまくいけばの全長を表しますContent-Lengthキーが含まれます 私のコードアンドロイドでダウンロードした前後のダウンロードファイルのサイズを知る方法

String DownloadUrl = "http://www.example.com/books/"+book_name; 
          String fileName = book_name; 


          URL url = new URL(DownloadUrl); 

//create the new connection 





          HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 

//set up some things on the connection 

          urlConnection.setRequestMethod("GET"); 

          urlConnection.setDoOutput(true); 

//and connect! 

          urlConnection.connect(); 

//set the path where we want to save the file 

//in this case, going to save it on the root directory of the 

//sd card. 

          // File SDCardRoot = new File("/storage/emulated/0/documents/docx/stuff/"); 

          File SDCardRoot = new File(Environment.getExternalStorageDirectory()+File.separator+"MybookStore/paper/paperStuff/documents/docx/other/stuff/"); 
//create a new file, specifying the path, and the filename 

//which we want to save the file as. 

          File file = new File(SDCardRoot,fileName); 

          String file_size = Long.toString(file.length()/1024); 

          int size_file=Integer.parseInt(file_size); 
//this will be used to write the downloaded data into the file we created 

          FileOutputStream fileOutput = new FileOutputStream(file); 

//this will be used in reading the data from the internet 

          InputStream inputStream = urlConnection.getInputStream(); 

//this is the total size of the file 

          int totalSize = urlConnection.getContentLength(); 

//variable to store total downloaded bytes 

          int downloadedSize = 0; 

//create a buffer... 

          byte[] buffer = new byte[1024]; 

          int bufferLength = 0; //used to store a temporary size of the buffer 

//now, read through the input buffer and write the contents to the file 

          while ((bufferLength = inputStream.read(buffer)) > 0) 

          { 

//add the data in the buffer to the file in the file output stream (the file on the sd card 

           fileOutput.write(buffer, 0, bufferLength); 

//add up the size so we know how much is downloaded 

           downloadedSize += bufferLength; 

           int progress=(int)(downloadedSize*100/totalSize); 

//this is where you would do something to report the prgress, like this maybe 

//updateProgress(downloadedSize, totalSize); 

          } 

私のコード

+0

あなたは 'android.app.DownloadManager'を使用していますか? – betorcs

+0

コードを共有するダウンロードしたファイルをどのようにダウンロードして追跡していますか? – NightFury

+0

私はcode.plzを編集します。@ NightFury –

答えて

0

........私を助けることができますダウンロードしようとしているリソース念頭に置いて

、ここでは簡単な例です:

HttpURLConnection connection = null; 
InputStream input = null; 
OutputStream output = null; 

try { 
    final URL url = new URL(resourceUrl); 
    connection = (HttpURLConnection) url.openConnection(); 
    connection.connect(); 

    final int length = connection.getContentLength(); 
    int downloaded = 0; 

    input = url.openStream(); 
    output = new FileOutputStream(targetFile); 

    final byte[] buffer = new byte[BUFFER_SIZE]; 
    int read; 
    while ((read = input.read(buffer)) != -1) { 
    output.write(buffer, 0, read); 
    downloaded += read; 
    } 

    if (downloaded == length) { 
    // The file was successfully downloaded. 
    } else { 
    // The file was not fully downloaded. 
    } 
} catch (IOException e) { 
    // Handle exception. 
} finally { 
    // Close resources. 
} 
関連する問題