mardi 5 mai 2015
Java Dateidownload klappt bei einigen Datein nicht
Posted on 09:51 by verona
Hi,
nachdem ich nun meinen Installer, der die Dateien downloadet und dann ins passende Verzeichnis verschiebt fertiggestellt habe, stelle ich nun fest, dass bei einigen Dateien der Download streikt:
Das hier sagt der Log, der erstellt wurde:
Hier dann der Code (die Zeilenangabe vom Crash ist mit einem Kommentar versehen, so das ihr diese auch hier finden könnt ;) )
Ach ja, der Codeausschnitt, der die ganzen Informationen wie Content-Lenght erstellt hat:
Damit ihr auch wisst, was was ist:
Zudem hätte ich da noch ein zweites Problem: Mir scheint es so, als würde das Programm nicht warten, sondern direkt den letzten Downloadlink downloaden, dabei sollte es eigentlich warten bis der erste Download fertig ist und dann direkt zum zweiten überspringen.
Hat da vielleicht irgendjemand eine Idee? ???:L
Ich hoffe ihr könnt mir hierbei helfen. Ich verwende übrigens Java 8. Vielleicht fällt euch nebenbei noch ein, was ich an dem hier geposteten Code verbessern kann. ;)
JavaGamer
nachdem ich nun meinen Installer, der die Dateien downloadet und dann ins passende Verzeichnis verschiebt fertiggestellt habe, stelle ich nun fest, dass bei einigen Dateien der Download streikt:
Das hier sagt der Log, der erstellt wurde:
Code:
[DEBUG] download URL: http://ift.tt/1zxibBX
[DEBUG] directory save file: C:\Users\Patrick\AppData\Roaming\.minecraft\mods
[DEBUG] Content-Type = application/java-archive
[DEBUG] Content-Disposition = inline; filename="[1.7.10]TerraFirmaCraft-0.79.18.673.jar"; filename*=UTF-8''%5B1.7.10%5DTerraFirmaCraft-0.79.18.673.jar
[DEBUG] Content-Length = 18873862
[DEBUG] fileName = [1.7.10]TerraFirmaCraft-0.79.18.673.jar"; filename*=UTF-8''%5B1.7.10%5DTerraFirmaCraft-0.79.18.673.ja
[ERROR] Error downloading file: C:\Users\Patrick\AppData\Roaming\.minecraft\mods\[1.7.10]TerraFirmaCraft-0.79.18.673.jar"; filename*=UTF-8''%5B1.7.10%5DTerraFirmaCraft-0.79.18.673.ja (Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch)
[ERROR] There was a problem!
java.io.FileNotFoundException: C:\Users\Patrick\AppData\Roaming\.minecraft\mods\[1.7.10]TerraFirmaCraft-0.79.18.673.jar"; filename*=UTF-8''%5B1.7.10%5DTerraFirmaCraft-0.79.18.673.ja (Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at shadowdragon.installer.task.DownloadTask.doInBackground(DownloadTask.java:52)
at shadowdragon.installer.task.DownloadTask.doInBackground(DownloadTask.java:1)
at javax.swing.SwingWorker$1.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at javax.swing.SwingWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Java Code:
-
/**
-
* Executed in background thread
-
*/
-
@Override
-
{
-
try
-
{
-
HTTPDownloadUtil util = new HTTPDownloadUtil();
-
util.downloadFile(downloadURL);
-
-
// set file information on the GUI
-
gui.setFileInfo(util.getFileName(), util.getContentLength());
-
-
-
// opens an output stream to save into file
-
-
byte[] buffer = new byte[BUFFER_SIZE];
-
int bytesRead = -1;
-
long totalBytesRead = 0;
-
int percentCompleted = 0;
-
long fileSize = util.getContentLength();
-
-
while((bytesRead = inputStream.read(buffer)) != -1)
-
{
-
outputStream.write(buffer, 0, bytesRead);
-
totalBytesRead += bytesRead;
-
percentCompleted = (int) (totalBytesRead * 100 / fileSize);
-
-
setProgress(percentCompleted);
-
}
-
-
outputStream.close();
-
-
util.disconnect();
-
}
-
{
-
Logger.log(Level.ERROR, "Error downloading file: " + ex.getMessage());
-
Logger.log2(Level.ERROR, ex, "Error downloading file");
-
ex.printStackTrace();
-
setProgress(0);
-
cancel(true);
-
}
-
return null;
-
}
Ach ja, der Codeausschnitt, der die ganzen Informationen wie Content-Lenght erstellt hat:
Java Code:
-
contentLength = httpConn.getContentLength();
-
-
if(disposition != null)
-
{
-
// extracts file name from header field
-
int index = disposition.indexOf("filename=");
-
if(index > 0)
-
fileName = disposition.substring(index + 10, disposition.length() - 1);
-
}
-
else
-
{
-
// extracts file name from URL
-
fileName = fileURL.substring(fileURL.lastIndexOf("/") + 1, fileURL.length());
-
}
-
-
// output for debugging purpose only
-
Logger.log(Level.DEBUG, "Content-Type = " + contentType);
-
Logger.log(Level.DEBUG, "Content-Disposition = " + disposition);
-
Logger.log(Level.DEBUG, "Content-Length = " + contentLength);
-
Logger.log(Level.DEBUG, "fileName = " + fileName);
Damit ihr auch wisst, was was ist:
Java Code:
-
contentLength = int
-
httpConn = HttpURLConnection
-
fileName = String
-
fileURL = String
Zudem hätte ich da noch ein zweites Problem: Mir scheint es so, als würde das Programm nicht warten, sondern direkt den letzten Downloadlink downloaden, dabei sollte es eigentlich warten bis der erste Download fertig ist und dann direkt zum zweiten überspringen.
Hat da vielleicht irgendjemand eine Idee? ???:L
Java Code:
-
-
FileUtil util = new FileUtil();
-
List<String> content = null;
-
try
-
{
-
content = util.readFile("./", "content.txt");
-
}
-
{
-
Logger.log(Level.FATAL, "No download link was found!");
-
Logger.log2(Level.FATAL, ex, "No download link was found!");
-
}
-
-
if(content != null && !content.isEmpty())
-
for(int i = 0; i < content.size(); i++)
-
{
-
downloadURL = content.get(i);
-
}
-
-
download(downloadURL, saveDir); // Dies hier ruft den SwingWorker "DownloadTask" auf, woraus ich auch den Code vom ersten Fehler habe (ist ja auch die selbe Datei xD)
Ich hoffe ihr könnt mir hierbei helfen. Ich verwende übrigens Java 8. Vielleicht fällt euch nebenbei noch ein, was ich an dem hier geposteten Code verbessern kann. ;)
JavaGamer
Java Dateidownload klappt bei einigen Datein nicht
Inscription à :
Publier les commentaires (Atom)
0 commentaires:
Enregistrer un commentaire