IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
vesel.fil
Člen
Avatar
vesel.fil:12.1.2014 13:36

Potřebuji zkopírovat složku (včetně obsahu) z jednoho místa na 2.. Zkoušel jsem

Files.copy(Paths.get(source), Paths.get(dest));

to ale nefungovalo. (zkopírovalo to složku bez obsahu) Pak jsem na internetu našel toto:

public void copyDirectory(File sourceLocation , File targetLocation) throws IOException {
    if (sourceLocation.isDirectory()) {
        if (!targetLocation.exists()) {
            targetLocation.mkdir();
        }

        String[] children = sourceLocation.list();
        for (int i=0; i<children.length; i++) {
            copyDirectory(new File(sourceLocation, children[i]),
                    new File(targetLocation, children[i]));
        }
    } else {

        InputStream in = new FileInputStream(sourceLocation);
        OutputStream out = new FileOutputStream(targetLocation);

        // Copy the bits from instream to outstream
        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
        }
        in.close();
        out.close();
    }
}

ale to nechápu. Není nějaký jednodušší způsob nebo není někdo kdo by mi alespoň trochu popsal co dělá to co jsem našel. (Vím že to kopíruje složky :D ale jak to ne)

Editováno 12.1.2014 13:38
Odpovědět
12.1.2014 13:36
I don't necessarily agree with everything I say.
Avatar
Odpovídá na vesel.fil
Neaktivní uživatel:12.1.2014 13:47

První část metody zkontroluje, jestli dostala adresu ke složce nebo k souboru, když ke složce, tak to rekurzivně zavolá opět tu samou metodu pro všechny složky a soubory uvnitř. To byl ten celý první if, a v else se překopíruje soubor :)

Editováno 12.1.2014 13:48
Nahoru Odpovědět
12.1.2014 13:47
Neaktivní uživatelský účet
Avatar
vesel.fil
Člen
Avatar
Odpovídá na Neaktivní uživatel
vesel.fil:12.1.2014 13:54

Jo, nějak tak jsem to věděl :). Ještě jsem trochu googlil a už to začínám chápat. A funguje to teda správě?

Nahoru Odpovědět
12.1.2014 13:54
I don't necessarily agree with everything I say.
Avatar
Odpovídá na vesel.fil
Neaktivní uživatel:12.1.2014 13:58

Zkus to, já tam nic špatného nevidím.

Nahoru Odpovědět
12.1.2014 13:58
Neaktivní uživatelský účet
Avatar
vesel.fil
Člen
Avatar
vesel.fil:12.1.2014 14:06

Funguje. Napadlo mě celý ten else blok nahradit

Files.copy(sourceLocation.toPath(), targetLocation.toPath());

a taky to funguje. Díky

Nahoru Odpovědět
12.1.2014 14:06
I don't necessarily agree with everything I say.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.