Hirdetés

Új hozzászólás Aktív témák

  • tothpetya

    újonc

    Sziasztok!

    Kellene egy kis segítség nekem. Van egy egyszerű Java program, ami csak annyit csinál, hogy sok kis fájlt másol egyik helyről a másikra. Naponta. Mivel elég sok van, ezért úgy kellene megoldani, hogy csak azokat másolja ami már nincs meg a másik helyen. Ezt a következőképpen oldottuk meg:

    //Másolás függvénye:
    public void masolas(File src, File dest)
    throws IOException {
    //Meg vizsgáljuk, hogy mappa-e:
    if (src.isDirectory()) {
    //Megpróbáljuk létrehozni a mappát (ha van, akkor nem csinál semmit)
    dest.mkdir();
    //Listába rendezzük a mappa tartalmát:
    String files[] = src.list();
    //Majd egyesével végigmegyünk rajta:
    for (String file : files) {
    //Elkészítjük a fájlokat:
    srcFile = new File(src, file);
    destFile = new File(dest, file);
    //Rekurzív másolás:
    masolas(srcFile, destFile);
    }
    } else {
    try {
    Files.copy(src.toPath(), dest.toPath());
    System.out.println("Másolás: " + src);
    } catch (FileAlreadyExistsException ex) {
    System.out.println("Ez a fájl már meg van: " + src);
    }
    }
    }

    Viszont így is körülbelül 15 perc alatt megy végig a fájlokon, ha meg van minden akkor is. Meg kellene gyorsítani. Ötletek?

    Kb így néz ki a struktúra:

    mappaneve1: fajl1, fajl2, fajl3
    mappaneve2: fajl1
    mappaneve3: fajl1 ... faj10

    Szóval van olyan mappa ami 10-15 fájlt is tartalmaz és ezek közül sok valószínűleg nem is változik. Arra gondoltam, hogy át kellene úgy alakítani, hogy először megnézi a mappa méretét és ha stimmel a kettő, akkor "bele se lép". Szerintetek ez kivitelezhető? Vagy azt is csak úgy tudja, hogy belelép és összeszámolja a tartalmát. Ha ez nem életképes, akkor valakinek van más ötlete?

Új hozzászólás Aktív témák