Mám script na sosání souborů z FTP ale ve chvíli kdy sosnu např .jar soubro, nebo .zip soubor tak se stáhne špatně, má odlišnou velikost (staženej soubor je větší než původní o.O) a jar nejde otevřít a zip je poškozenej a nejde rozbalit...
Díky za pomoc...
package cplauncher.net;
import cplauncher.Launcher;
import cplauncher.var;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.io.CopyStreamEvent;
import org.apache.commons.net.io.CopyStreamListener;
public class ftp {
private static FileOutputStream fos;
public static long size;
public static String f;
public static boolean download(String file)
{
String user,pass,host;
f = file;
user = "...";
pass = "...";
host = "...";
FTPClient client = new FTPClient();
client.setCopyStreamListener(createListener());
FTPClientConfig config = new FTPClientConfig();
config.setLenientFutureDates(true);
client.configure(config);
try {
client.connect(host); //Lognem FTP
client.login(user, pass);
for(FTPFile info : client.listFiles()) //Vycucnem soubory a zjistíme si velikost souboru co potřebujem
{
System.err.print(info.getName());
System.err.print(" - ");
System.err.print(info.getSize());
System.err.print("\n");
if(info.getName().equals(file))
{
size = info.getSize();
}
}
fos = new FileOutputStream(var.launcherTemp+"\\"+file); //Vytvoříme novej filestream pro soubor co budem sosat
Launcher.infotxt.setText("Začínám stahovat "+file);
boolean retrieveFile = client.retrieveFile(file, fos); //sosnem novej fajl
fos.close();
client.disconnect();
return retrieveFile; //az bude soslej, vratime true
} catch (IOException e) {
} finally {
try {
client.disconnect();
} catch (IOException e) {
}
}
return false;
}
private static CopyStreamListener createListener(){
return new CopyStreamListener(){
private long megsTotal = 0;
@Override
public void bytesTransferred(CopyStreamEvent event) {
bytesTransferred(event.getTotalBytesTransferred(), event.getBytesTransferred(), event.getStreamSize());
}
@Override
public void bytesTransferred(long totalBytesTransferred,
int bytesTransferred, long streamSize) {
long megs = totalBytesTransferred / 1000000;
double prec,tr,si;
int p;
tr = (double)(totalBytesTransferred / 1024);
si = (double)(size/1024);
prec = (tr / si)*100;
p = (int)prec;
String infot,infoa;
infot = String.valueOf((int)tr);
infoa = String.valueOf((int)si);
for (long l = megsTotal; l < megs; l++) {
Launcher.infotxt.setText("Stahuji soubor "+ f +"[" + infot + "/" + infoa + "kB]");
System.err.print(prec);
System.err.print(" - ");
System.err.print(si);
System.err.print(" - ");
System.err.print(p);
System.err.print("\n");
Launcher.progress.setValue(p);
}
megsTotal = megs;
}
};
}
}