Kopier et bibliotek i Java

1. Introduktion

I denne korte vejledning ser vi, hvordan man kopierer et bibliotek i Java, inklusive alle dets filer og underkataloger. Dette kan opnås ved hjælp af Java-funktioner eller tredjepartsbiblioteker.

2. Brug af java.nio API

Java NIO har været tilgængelig siden Java 1.4. Java 7 introduceret NIO 2 der bragte mange nyttige funktioner som bedre support til håndtering af symbolske links, filattributadgang. Det gav os også klasser som f.eks Sti, Stierog Filer der gjorde filsystemmanipulation meget lettere.

Lad os demonstrere denne tilgang:

public static void copyDirectory (String sourceDirectoryLocation, String destinationDirectoryLocation) kaster IOException {Files.walk (Paths.get (sourceDirectoryLocation)) .forEach (source -> {Path destination = Paths.get (destinationDirectoryLocation, source.toString () .substring (sourceDirectoryLocation) .length ())); prøv {Files.copy (kilde, destination);} fange (IOException e) {e.printStackTrace ();}}); }

I dette eksempel vi gik i filtræet rodfæstet i den givne kildekatalog ved hjælp af Files.walk () og påberåbt sig Files.copy () for hver fil eller mappe vi fandt i kildemappen.

3. Brug af java.io API

Java 7 var et vendepunkt fra filsystemhåndteringsperspektivet, da det introducerede mange nye praktiske funktioner.

Men hvis vi vil være kompatible med ældre Java-versioner, kan vi kopiere et bibliotek ved hjælp af rekursion og java.io-fil funktioner:

privat statisk ugyldigt copyDirectory (File sourceDirectory, File destinationDirectory) kaster IOException {if (! destinationDirectory.exists ()) {destinationDirectory.mkdir (); } for (String f: sourceDirectory.list ()) {copyDirectoryCompatibityMode (ny fil (sourceDirectory, f), ny fil (destinationDirectory, f)); }}

I dette tilfælde, vi opretter en mappe i destinationsmappen for hver mappe i kildekatalogtræet. Så påberåber vi os copyDirectoryCompatibityMode () metode:

offentlig statisk ugyldig copyDirectoryCompatibityMode (File source, File destination) kaster IOException {if (source.isDirectory ()) {copyDirectory (source, destination); } ellers {copyFile (kilde, destination); }} 

Også, lad os se, hvordan man kopierer en fil ved hjælp af FileInputStream og FileOutputStream:

privat statisk ugyldig copyFile (File sourceFile, File destinationFile) kaster IOException {try (InputStream in = new FileInputStream (sourceFile); OutputStream out = new FileOutputStream (destinationFile)) {byte [] buf = new byte [1024]; int længde; mens ((længde = in. læs (buf))> 0) {out.write (buf, 0, længde); }}} 

4. Brug af Apache Commons IO

Apache Commons IO har mange nyttige funktioner som hjælpeklasser, filfiltre og filkomparatorer. Her bruger vi FileUtils der giver metoder til nem fil- og biblioteksmanipulation, dvs. læsning, flytning, kopiering.

Lad os tilføje commons-io til vores pom.xml fil:

 commons-io commons-io 2.7 

Lad os endelig kopiere et bibliotek ved hjælp af denne tilgang:

offentlig statisk ugyldig copyDirectory (String sourceDirectoryLocation, String destinationDirectoryLocation) kaster IOException {File sourceDirectory = ny fil (sourceDirectoryLocation); File destinationDirectory = ny fil (destinationDirectoryLocation); FileUtils.copyDirectory (sourceDirectory, destinationDirectory); }

Som vist i det foregående eksempel gør Apache Commons IO det meget lettere, siden vi behøver kun at ringe FileUtils.copyDirectory () metode.

5. Konklusion

Denne artikel illustrerede, hvordan man kopierer et bibliotek i Java. Komplette kodeeksempler er tilgængelige på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found