Er zijn veel repetitieve taken die u van tijd tot tijd moet voltooien. Een voorbeeld is als u regelmatig wijzigingen moet aanbrengen in bestanden op uw lokale computer. Deze acties kunnen het kopiëren, verplaatsen, verwijderen of archiveren van bestanden omvatten.

In plaats van deze repetitieve taken handmatig uit te voeren, kunt u ze automatiseren met een programma. U kunt dit doen met een enkel scriptbestand, met behulp van een van de vele programmeertalen die beschikbaar zijn, zoals Java.

Hoe de Java-toepassing in te stellen

Zorg er eerst voor dat u Oracle's Java SE Development Kit geïnstalleerd. Maak vervolgens een eenvoudige Java-consoletoepassing:

  1. Maak ergens op uw computer een bestand met de naam SimpleScript.java.
  2. Open het bestand in een teksteditor of IDE.
  3. Importeer bovenaan het bestand de IOException-klasse. Hiermee kunt u bestands- of IO-gerelateerde uitzonderingen afhandelen wanneer u probeert bepaalde functies uit te voeren, zoals het kopiëren van een bestand.
    importeren java.io. IOUitzondering;
  4. Voeg hieronder toe de belangrijkste Java-klasse en de hoofd methode. De hoofdmethode wordt uitgevoerd wanneer u de toepassing start. Druk voor nu gewoon een bericht af om ervoor te zorgen dat het programma correct werkt. Hierna kunt u de inhoud van de hoofdfunctie vervangen door een van de volgende voorbeelden om ze te testen.
    klasSimpleScript{ 
    openbaarstatischleegtehoofd(Tekenreeksargumenten[])worpen IOUitzondering {
    System.out.println("Eenvoudige console-app");
    }
    }
  5. Om het script uit te voeren, begint u met het gebruik van een opdrachtregel om naar de locatie van uw Java-bestand te navigeren. Als u bijvoorbeeld uw bestand op het bureaublad hebt opgeslagen, zou de opdracht zijn:
    CD Bureaublad
  6. Sla het bestand op en gebruik de javac commando om het te compileren. Elke keer dat u wijzigingen aanbrengt in het bestand, moet u het opnieuw compileren met javac.
    javac SimpleScript.java
  7. Voer de applicatie uit:
    java SimpleScript

Toegang krijgen tot lokale bestanden op uw computer

U kunt de klasse File gebruiken om programmatisch toegang te krijgen tot bestanden in een directory.

  1. Maak een nieuwe map, genaamd Nieuwe Directory, in dezelfde map als uw java-bestand. Maak er enkele bestanden in - het kunnen lege tekstbestanden zijn als je wilt.
  2. Importeer bovenaan uw Java-toepassing de klasse File. Hiermee krijgt u toegang tot bepaalde methoden en andere functionaliteit met betrekking tot OS-bestanden en -mappen.
    importeren java.io. Bestand;
  3. Maak een nieuw File-object met behulp van het relatieve pad naar uw nieuwe map.
    Bestandsmap = nieuwe Bestand("Nieuwe Directory");
  4. Gebruik de functie listFiles() om toegang te krijgen tot een lijst met alle bestanden in die map.
    Bestand[] listOfFiles = directory.listFiles();

    voor (Bestandsbestand: listOfFiles) {
    System.out.println (bestand);
    }

  5. Compileer het programma opnieuw en voer het uit met de javac en Java commando's.

Hoe bestanden naar een andere locatie te kopiëren

Er zijn meerdere manieren waarop u bestanden kunt kopiëren. Een gebruikelijke manier om bestanden te kopiëren (vooral vóór Java 7 en het pakket java.nio.file), is door de klassen FileInputStream of FileOutputStream te gebruiken.

  • De Bestandsinvoerstroom class kunt u een invoerstroom openen om bytes uit een bestand te lezen.
  • De BestandsuitvoerStream class kunt u een uitvoerstroom openen om bytes naar een bestand te schrijven.

Bij het kopiëren van bestanden is het de bedoeling om een ​​invoer- en uitvoerstroom te openen. Met behulp van die streams leest u de bytes van het bestand op de bronlocatie en schrijft u die bytes naar de nieuwe locatie.

In dit voorbeeld wordt een nieuwere implementatie gebruikt om bestanden te kopiëren, met behulp van de functie copy() uit de klasse Files van het pakket java.nio.file. Om het pakket java.nio.file te gebruiken, moet Java 7 of hoger zijn geïnstalleerd.

  1. Importeer bovenaan het bestand de klassen Bestand en Pad uit het pakket java.nio.file.
    importeren java.nio.bestand. bestanden;
    importeren java.nio.bestand. paden;
  2. Voeg een nieuw bestand toe met de naam Bestand Naar Kopie.txt in dezelfde map als uw java-bestand. Declareer in de functie main() het relatieve pad naar dat bestand.
    String copySource = "FileToCopy.txt"; 
  3. Maak een nieuwe map, genaamd Nieuwe map, om het bestand naar te kopiëren. Voeg het relatieve pad naar de bestemming toe in de functie main().
    String copyDestination = "NewFolder/FileToCopy.txt";
  4. Gebruik de methode copy() om het bestand van de bron naar de bestemming te kopiëren.
    proberen {
    Files.copy (Paths.get (copySource), Paths.get (copyDestination));
    } vangst(Uitzondering e) {
    System.out.println("Kon het specificatiebestand niet kopiëren in: " + copyDestination
    + ". Controleren als de map of het bestand bestaat al.");
    }
  5. Compileer het programma opnieuw en voer het uit met de javac en Java commando's.
  6. Open de nieuwe map om te bevestigen dat het programma uw bestand heeft gekopieerd.

Bestanden of mappen verplaatsen

U kunt bestanden of mappen verplaatsen met de Actie() functie in de klasse Files, die ook deel uitmaakt van het pakket java.nio.file.

  1. Maak een nieuwe map met de naam DirectoryToMove in dezelfde map als uw Java-bestand.
  2. Maak een tweede map met de naam Nieuwe Directory in dezelfde map. Dit is waar het programma de originele map naartoe zal verplaatsen.
  3. Maak bestandsobjecten aan voor de map die u wilt verplaatsen en de locatie waarnaar u deze wilt verplaatsen:
    Bestand moveSource = nieuwe Bestand("DirectoryNaarVerplaats");
    Bestand verplaatsenDestination = nieuwe Bestand("NieuweDirectory/DirectoryNaarVerplaats");
  4. Gebruik de Bestanden.move() methode om het bestand van de bron naar de bestemming te verplaatsen:
    proberen {
    Files.move (moveSource.toPath(), moveDestination.toPath());
    System.out.println("Map is succesvol verplaatst.");
    } vangst (IOException ex) {
    ex.printStackTrace();
    }
  5. Compileer het programma opnieuw en voer het uit met de javac en Java commando's.
  6. Open de map NewDirectory om te zien dat de map "DirectoryToMove" zich nu in de map bevindt.

Hoe een bestand te verwijderen

U kunt de verwijderen() methode uit de klasse File om een ​​bepaald bestand te verwijderen.

  1. Maak een bestand met de naam BestandNaarVerwijderen.txt. Sla het bestand op in dezelfde map als uw Java-toepassing.
  2. Maak een nieuw File-object voor het bestand dat u wilt verwijderen. Gebruik vervolgens de methode delete() om het bestand te verwijderen. De delete-methode retourneert een true of false waarde, afhankelijk van of het verwijderen is gelukt.
    Bestand bestandToDelete = nieuwe Bestand("BestandNaarVerwijderen.txt");

    als (fileToDelete.delete()) {
    System.out.println("Bestand succesvol verwijderd.");
    } anders {
    System.out.println("Kan het bestand niet verwijderen.");
    }

Bestanden zippen

Er zijn veel manieren waarop u een zip-archief kunt maken met meerdere gecomprimeerde bestanden. In dit voorbeeld wordt de gebruikt ZipOutputStream en ZipEntry klassen.

  1. Importeer de benodigde ZipOutputStream-, ZipEntry- en FileOutputStream-klassen bovenaan het bestand.
    importeren java.util.zip. ZipOutputStream;
    importeren java.util.zip. ZipEntry;
    importeren java.io. FileOutputStream;
  2. Maak het zipbestand en een lijst met zipEntry-objecten die de tekstbestanden vertegenwoordigen die u wilt zippen. Dit voorbeeld genereert nieuwe tekstbestanden, maar u kunt het script later wijzigen om tekstbestanden op te nemen die al bestaan.
    Bestand zipFile = nieuwe Bestand("ZippedFile.zip");
    ZipEntry[] zipEntries = nieuwe Postcode[] {nieuwe ZipEntry ("zipBestand1.txt"),
    nieuwe ZipEntry ("zipFile2.txt"), nieuwe ZipEntry("zipFile3.txt"};
  3. Maak de zip-uitvoerstroom om gegevens naar het zipbestand te schrijven.
    ZipOutputStream uit = nieuwe ZipOutputStream(nieuwe FileOutputStream (zipFile));
  4. Voeg elk bestand toe aan de zip-map en sluit de stream.
    voor (ZipEntry zipEntry: zipEntries) {
    out.putNextEntry (zipEntry);

    StringBuilder sb = nieuwe StringBuilder();
    sb.append("Inhoud in tekstbestand");

    byte[] gegevens = sb.toString().getBytes();
    uit.schrijven (gegevens, 0, gegevens.lengte);
    uit.closeEntry();
    }

    uit.sluiten();

  5. Compileer het programma opnieuw en voer het uit met de javac en Java commando's. U ziet de nieuwe zip-map verschijnen in uw bestandsmap.

Eenvoudige taken automatiseren met Java

U kunt een script gebruiken om repetitieve bestandsbeheertaken programmatisch uit te voeren. Deze taken omvatten het openen, kopiëren, verplaatsen, verwijderen en zippen van bestanden.

Een andere manier waarop u repetitieve taken kunt automatiseren, is door systeemopdrachten in een scriptbestand te gebruiken. Op Linux en macOS staan ​​dergelijke bestanden bekend als shell-scripts, terwijl Windows ernaar verwijst als batch-scripts.