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: https://dl.dropboxusercontent.com/u/57913086/TFC/Build%2079/%5B1.7.10%5DTerraFirmaCraft-0.79.18.673.jar
[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)
Hier dann der Code (die Zeilenangabe vom Crash ist mit einem Kommentar versehen, so das ihr diese auch hier finden könnt )
Java:
/**
* Executed in background thread
*/
@Override
protected Void doInBackground() throws Exception
{
try
{
HTTPDownloadUtil util = new HTTPDownloadUtil();
util.downloadFile(downloadURL);
// set file information on the GUI
gui.setFileInfo(util.getFileName(), util.getContentLength());
String saveFilePath = saveDirectory + File.separator + util.getFileName();
InputStream inputStream = util.getInputStream();
// opens an output stream to save into file
FileOutputStream outputStream = new FileOutputStream(saveFilePath); // Line 52
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();
}
catch(IOException ex)
{
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:
String disposition = httpConn.getHeaderField("Content-Disposition");
String contentType = httpConn.getContentType();
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);
Java:
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:
FileUtil util = new FileUtil();
List<String> content = null;
try
{
content = util.readFile("./", "content.txt");
}
catch (IOException ex)
{
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
Zuletzt bearbeitet: