# Dateigröße ermitteln



## Guest (10. Nov 2006)

Hi!

Habe eine URL("http://.../Daten.txt);

Wie kann ich nun von der Datei "Daten.txt" die Dateigröße ermitteln?

bei einer URL("C:\Daten.txt) kann ich einfach in eine File umwandeln und mit File.length() bestimmen.
bei der o.g. URL gehts nicht da ja keine lokale Datei (File.exists() = false, File.length() = 0)


----------



## wranger (10. Nov 2006)

Moin,

also da fällt mir nur ein die Datei in einem Stream zu lesen und die Byts zu zählen oder aber lesen und abspeichern und dann die Größe ermitteln.


----------



## JavaOpfer (10. Nov 2006)

> bei einer URL("C:\Daten.txt) kann ich einfach in eine File umwandeln und mit File.length() bestimmen.
> bei der o.g. URL gehts nicht da ja keine lokale Datei (File.exists() = false, File.length() = 0)



Kannst du das mal Präzisieren ?!  

Ich verstehe das jetzt so, das du von irgend einer Domain ein File holen möchtest und von diesem dann die Länge bestimmen möchtest!?

Wenn dem so ist, musst du dir erstmal Gedanken machen, wie du eine Verbindung zum Internet aufbauen kannst und deine Datei laden kannst... 
Also nachlesen: Thema "Sockets"...

Gruß


----------



## meez (10. Nov 2006)

Das geht nicht wirklich so toll...

Entweder du liest den content-length aus dem HTTP Header, 
oder du lädst die Datei (auf dein FS) runter.


----------



## kaie (10. Nov 2006)

Hier eine Version, die die einzelnen Bytes aus einem Stream zählt:

```
import java.io.*;
import java.net.*;

public class URLBeispiel
{
    public static void main(String[] args) throws Exception
    {
        System.out.println(fileSize("http://www.google.de/intl/de_de/images/logo.gif"));
    }

    public static int fileSize(String url)
    {
        try
        {
            URL u = new URL(url);
            BufferedInputStream in = new BufferedInputStream(u.openStream());
            int m = 0;
            int n = 0;
            byte[] b = new byte[1024];
            while (m > -1)
            {
                n += m;
                m = in.read(b);
            }
            return n;
        } catch (Exception e)
        {
            return -1;
        }
    }
}
```


----------

