# Dateigröße einer Datei im Internet ermitteln



## crazy.duck (9. Dez 2008)

Hallo zusammen,

ich bastle derzeit an einem Programm, das mir einen iTunes-RSS Feed zusammenbaut. 
Dabei bin ich auf folgendes Problem gestoßen: Ich muss die Dateigröße der verlinkten Dateien in den Feed schreiben. Nun liegen diese Dateien aber auf einem Webserver. Es sind zu viele und sie sind zu groß, um sie alle herunterzuladen.
Ich suche also nach einer Möglichkeit, die Dateigröße zu ermitteln, ohne die Dateien komplett zu übertragen. Geht das? 

Freue mich über eure Hilfe 

Gruß,
Mirco


----------



## musiKk (9. Dez 2008)

Dafür sollte ein HEAD-Request verwendet werden. Es ist wie GET, überträgt aber nur die Metadaten ohne den eigentlichen Inhalt.


----------



## crazy.duck (10. Dez 2008)

Jawoll, danke, so funktionierts! 
Der Vollständigkeit halber poste ich mal hier eine "Lösung" 

GRuß,
Mirco


```
import java.io.*;
import java.net.*;
import java.util.*;
 
 
public class HttpHeadRequest {
 
    public HashMap<String, String> getHeader(URL url) throws UnknownHostException, IOException {
        HashMap<String, String> hash = new HashMap<String, String>();
        int port = url.getPort() != -1 ? url.getPort() : url.getDefaultPort();
       
        Socket sock = new Socket(url.getHost(), port);
        PrintWriter out = new PrintWriter(sock.getOutputStream(), true);
        BufferedReader in = new BufferedReader(new InputStreamReader(
                                    sock.getInputStream()));
       
        String request = "HEAD " + url.getPath() + " HTTP/1.0\r\n\r\n";
       
        out.println(request);
        String line;
        while((line = in.readLine()) != null) {
            String[] s = line.split(":");
            if(s.length < 2) { continue; }
            hash.put(s[0], s[1].trim());
        }
       
        out.close();
        in.close();
        sock.close();
 
        return hash;
    }
 
    public static void main(String[] args) {
        HttpHeadRequest request = new HttpHeadRequest();
        try {
            HashMap<String, String> header = request.getHeader(new URL("http://www.google.de"));
            System.out.println(header.get("Content-Length") + " bytes");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
}
```


----------

