Чтение размера файла содержимого URL? - PullRequest
0 голосов
/ 24 октября 2018

Я пытался прочитать размер файла, который находится в сетевом расположении.

Я мог прочитать его, запросив заголовок http.Но я впервые использовал метод InpuStream или BufferedInputStream available (). При чтении байтов с помощью bis.read () он показывает 0 с помощью available ().

Почему он не будет работать с available ()?

   public class GetNetworkLocation {
    public void main(String[] arg) {
     new GetNetworkLocation.startApp();
    }
    private void startApp() {
     getNetworkFile();
    }
    private void getNetworkFile() throws MalformedURLException, IOException, InterruptedException {
     try   {
     input = new URL(UrlString).openStream();
     bis = new BufferedInputStream(input);
     // Strange the content is 0 ?
     System.out.println("File size with BufferedInputStream" + " " + bis.available());
     System.out.println("File size with Http Head Request" + " " + bis.available());
     }
    } catch (MalformedURLException me) {System.out.println("Type a correct Network Address for your File!");}
   }
   public long getFileSize(new URL(UrlString)) {
    HttpURLConnection conn = null;
    try {
    conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod("HEAD");
    return conn.getContentLengthLong();
   } catch (IOException e) {
   throw new RuntimeException(e);
  } finally {
  if (conn != null) {
   conn.disconnect();
  }
 }
}}   
...