Diskuze: Zkopírování složky

Java Java Zkopírování složky

Avatar
vesel.fil
Člen
Avatar
vesel.fil:

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
Jiří Gracík
Redaktor
Avatar
Odpovídá na vesel.fil
Jiří Gracík:

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  +1 12.1.2014 13:47
Creating websites is awesome till you see the result in another browser ...
Avatar
vesel.fil
Člen
Avatar
Odpovídá na Jiří Gracík
vesel.fil:

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
Jiří Gracík
Redaktor
Avatar
Odpovídá na vesel.fil
Jiří Gracík:

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

Nahoru Odpovědět 12.1.2014 13:58
Creating websites is awesome till you see the result in another browser ...
Avatar
vesel.fil
Člen
Avatar
vesel.fil:

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.