Anonymní profil exim – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil exim – Programujte.comAnonymní profil exim – Programujte.com

 

Příspěvky odeslané z IP adresy 149.255.82.–

exim
Java › Stahování z FTP: Stahuje se…
31. 8. 2012   #162557

binarni rezim bezi zda se v poradku :/

exim
Java › Stahování z FTP: Stahuje se…
31. 8. 2012   #162549

 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;
            }
        };
    }
}
exim
Java › Unzip
31. 8. 2012   #162538

Zdravím,

potřebuju rozbalit archív (zip)

package cplauncher.zip;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
 
public class unzip
{
    List<String> fileList;
 
    public static void unzip(String in, String out)
    {
    	unzip unZip = new unzip();
    	unZip.unZipIt(in,out);
    }
 

    public void unZipIt(String zipFile, String out){
 
     byte[] buffer = new byte[1024];
 
     try{
 
    	//create output directory is not exists
    	File folder = new File(out);
    	if(!folder.exists()){
    		folder.mkdir();
    	}
            try (ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile))) {
                ZipEntry ze = zis.getNextEntry();
     
                while(ze!=null){
     
                   String fileName = ze.getName();
               File newFile = new File(out + File.separator + fileName);
     
               System.out.println("file unzip : "+ newFile.getAbsoluteFile());
     
                new File(newFile.getParent()).mkdirs();
                    try (FileOutputStream fos = new FileOutputStream(newFile)) {
                        int len;
                        while ((len = zis.read(buffer)) > 0) {
                                   fos.write(buffer, 0, len);
                        }
                    }   
                ze = zis.getNextEntry();
                }
     
            zis.closeEntry();
            }
 
    	System.out.println("Done");
 
    }catch(IOException ex){
    }
   }    
}

ale ve chvíli kdy zavolam unZipIt("ss.zip", "C:/data/");

tak se mi do složky data rozbalí jen jeden adresář ze zipu a jeden soubor kterej má velikost 0b...

Nevíte kde je chybka? žádnej error to nehlásá

exim
Java › Stahování z FTP + progress bar
31. 8. 2012   #162527

Díky, nakonec sem využil FTPFile třídu, pomocí ní a FTPClient sem si vypsal list souborů ve složce a pomocí cyklu jsem si vypsal vždy název a velikost, pomocí podmínky si vycuc co jsem potřeboval a zapsal is velikost :)) Mužu sem hodit zdroj kdyby nekdo chtel, ale asi by to šlo jednodušeji..

Díky za pomoc

exim
Java › Stahování z FTP + progress bar
31. 8. 2012   #162509

Tak sem stylem pokus-omyl rozeběhnul setCopyStreamListener, ale tím pouze zjistím pouze přenesené byty:

Takže pro lidi kterým se to někdy bude hodit:

FTPClient client = new FTPClient();
client.setCopyStreamListener(createListener()); //vytvoříme listener
 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) {
                
			//tu potřebuju propočítat stažený / celková velikost/*100
                        // - dá mi to výsledný procenta 0-100 který následně budu cpát do progres baru
                                                            
                }
                
            }
        };
    }

Nicméně se mi nedaří zjistit celková velikost souboru ještě před tím, než to začne sosat? nejlépe bych si to dal do globalní promněný abych si ji mohl brát odkudkoliv...

Díky

exim
Java › Stahování z FTP + progress bar
30. 8. 2012   #162436

zlz: Koukal sem, ale nevim jak to použít... :/ Nedaš mi prosim příklad?

exim
Java › Stahování z FTP + progress bar
30. 8. 2012   #162431

#2 TheOndrap
To mě napadlo, ale když ono se to nejdřív sosá někam do buhví jakýho tempu a ten soubor nevim kde je abych mohl zjištovat jeho velikost

exim
Java › Stahování z FTP + progress bar
30. 8. 2012   #162429

Zdravim mám kod:

 public static boolean download(String file)
   {
      
       String user,pass,host;
       user = "...";
       pass = "..."; 
       host = "...";
       
       FTPClient client = new FTPClient();
       
       try {
            client.connect(host);
            client.login(user, pass);
 

           
            fos = new FileOutputStream(file);
            boolean retrieveFile = client.retrieveFile(file, fos);
            return retrieveFile;

            
            
        } catch (IOException e) {
        } finally {
            try {
                client.disconnect();
            } catch (IOException e) {
            }
        }
       
   
       return false;
   }

 a když ho provedu (začnu stahovat soubor z ftp), tak mam v app ještě grafický progress bar (JProgressBar) a potřebuju aby ukazoval kolik se toho souboru soslo...

Díky za reakce

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý