在android中使用http比较服务器上文件的大小和sdcard上的文件大小

Posted

技术标签:

【中文标题】在android中使用http比较服务器上文件的大小和sdcard上的文件大小【英文标题】:Compare the size of a file on the server with the one on the sdcard using http in android 【发布时间】:2013-01-16 09:37:40 【问题描述】:

我可以使用安卓下载管理器从服务器下载文件并将其保存在 sdcard 中。

现在我需要获取服务器中文件的大小,以与 sdcard 上下载的文件进行比较。我能够获得下载文件的大小,现在我需要帮助来创建一种方法来返回服务器中文件的大小 已经尝试过了,但不起作用..

  public  int getFileSizeAtURL(URL url)
        


          int filesize = -1;

          try
          
              URL urls = new URL(file_url);
              HttpURLConnection http = (HttpURLConnection)urls.openConnection();
              http.connect();
              filesize = http.getContentLength();
              http.disconnect();

          
          catch(Exception e)
          

          

          return filesize;

        

通过使用

           Toast.makeText(getApplicationContext(),getFileSizeAtURL(urls)+" kb", Toast.LENGTH_LONG).show(); 

它给了我初始化值..-1kb 我如何使用这个方法来返回文件大小

                              Solved it !!!!

我通过将此代码放在主要方法上解决了我的问题

   if (android.os.Build.VERSION.SDK_INT > 9) 
                            StrictMode.ThreadPolicy policy = 
                                new StrictMode.ThreadPolicy.Builder().permitAll().build();
                            StrictMode.setThreadPolicy(policy);
                         
                      URL urls = new URL(file_url);
                      HttpURLConnection http = (HttpURLConnection)urls.openConnection();
                      http.connect();
                      int filesize = http.getContentLength();

                      http.disconnect();

它给了我服务器中文件的文件大小,现在我可以与 sdcard 上的文件进行比较

    File file=Environment.getExternalStorageDirectory();
                        String filename = file.getPath() + "/test/testing";
                        File myfile = new File(filename);
                        long size = myfile.length()  

享受吧!!!!

【问题讨论】:

【参考方案1】:
final URLConnection connection = url.openConnection();
final int length = connection.getContentLength();

如上尝试使用URLConnection.getContentLength。如果服务器没有指定长度,那么你就无法知道。

length 返回服务器文件大小。以便您可以比较两个文件

【讨论】:

【参考方案2】:
  if (android.os.Build.VERSION.SDK_INT > 9) 
                        StrictMode.ThreadPolicy policy = 
                            new StrictMode.ThreadPolicy.Builder().permitAll().build();
                        StrictMode.setThreadPolicy(policy);
                     
                  URL urls = new URL(file_url);
                  HttpURLConnection http = (HttpURLConnection)urls.openConnection();
                  http.connect();
                  int filesize = http.getContentLength();

                  http.disconnect();

它给了我服务器中文件的文件大小,现在我可以与 sdcard 上的文件进行比较

   File file=Environment.getExternalStorageDirectory();
                    String filename = file.getPath() + "/test/testing";
                    File myfile = new File(filename);
                    long size = myfile.length() 

【讨论】:

以上是关于在android中使用http比较服务器上文件的大小和sdcard上的文件大小的主要内容,如果未能解决你的问题,请参考以下文章

本地xshell损坏了着急拷贝服务器上的大文件怎么办?有办法lrzsz来帮忙

Android,http:如何将文件上传到由共享服务器托管的站点?

android的自带的httpClient 怎么上传文件

使 Android 视频文件准备好通过 HTTP 播放

如何提取Redis中的大KEY

如何搭建 Android SDK 镜像源