D
Dave81
Gast
Hallo Leute!
Ich bin mit meinem Latein am ende.
Ich versuche eine Datei die so um die 100MB hat über eine URLConnection zu laden und auf die Festplatte zu speichern.
Der Aufruf von con.getContentLength() liefert aber nur 2331 bytes. Wie schaffe ich es die ganze Datei zu laden.
Hier der SourceCode:
Ich bin mit meinem Latein am ende.
Ich versuche eine Datei die so um die 100MB hat über eine URLConnection zu laden und auf die Festplatte zu speichern.
Der Aufruf von con.getContentLength() liefert aber nur 2331 bytes. Wie schaffe ich es die ganze Datei zu laden.
Hier der SourceCode:
Code:
java.io.BufferedInputStream is = null;
java.io.FileOutputStream fos = null;
try{
java.net.URL download = new java.net.URL("http://www.myserver.com/myFile.rar");
java.net.HttpURLConnection con = (java.net.HttpURLConnection) download.openConnection();
//Habe es auch schon ohne setRequestMethod versucht
con.setRequestMethod("GET");
con.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; JVM)");
con.setRequestProperty("Pragma", "no-cache");
con.setRequestProperty("Connection", "keep-alive");
System.out.println(con.getHeaderField("content-type")); //liefert nur 2331 bytes
//int length = con.getHeaderFieldInt("content-length", -1);
System.out.println(con.getContentType()); //liefert auch nur 2331 bytes
int length = con.getContentLength();
is = new java.io.BufferedInputStream(download.openStream());
fos = new java.io.FileOutputStream(System.getProperty("user.dir")+java.io.File.separator+"out.rar", false);
//System.out.println(is.available()); //liefert auch nur 2331 bytes
byte[] buf = new byte[1024];
int len = 0;
// die nachfolgende Schleife liefert eben auch nur 2331 bytes
while( (len = is.read(buf)) > 0 ){
for(int i = 0; i < len; i++){
fos.write(buf[i]);
}
}
}catch(Exception e){
}finally{
if(is != null && fos != null){
try{
fos.flush();
fos.close();
is.close();
}catch(Exception e){};
}
}