Opret et katalog i Java

1. Oversigt

Oprettelse af en mappe med Java er ret ligetil. Sproget giver os to metoder, der giver os mulighed for at oprette enten en enkelt mappe eller flere indlejrede mapper - mkdir () og mkdirs ().

I denne vejledning ser vi, hvordan de begge opfører sig.

2. Opret et enkelt bibliotek

Lad os starte med oprettelsen af ​​en enkelt mappe.

Til vores formål bruger vi brugeren Midlertidig vejviser. Vi kan slå det op med System.getProperty (“java.io.tmpdir”).

Vi sender denne sti til en Java Fil objekt, som repræsenterer vores midlertidige mappe:

privat statisk endelig fil TEMP_DIRECTORY = ny fil (System.getProperty ("java.io.tmpdir"));

Lad os nu oprette en ny mappe inde i den. Vi opnår dette ved at ringe til Fil :: mkdir metode på en ny Fil objekt, der repræsenterer den mappe, der skal oprettes:

Fil newDirectory = ny fil (TEMP_DIRECTORY, "ny_katalog"); assertFalse (newDirectory.exists ()); assertTrue (newDirectory.mkdir ());

For at sikre, at vores bibliotek ikke eksisterer endnu, brugte vi først eksisterer () metode.

Så kaldte vi mkdir () metode, der fortæller os om oprettelsen af ​​biblioteket lykkedes eller ej. Hvis biblioteket allerede eksisterede, ville metoden være vendt tilbage falsk.

Hvis vi foretager de samme opkald igen:

assertTrue (newDirectory.exists ()); assertFalse (newDirectory.mkdir ());

Så, som vi forventede, vender metoden tilbage falsk på det andet opkald.

Og mkdir () metode vender ikke kun tilbage falsk når biblioteket allerede findes men også i nogle andre situationer. For eksempel kunne der være en fil med navnet på den mappe, vi vil oprette. Eller måske mangler vi tilladelserne til at oprette denne mappe.

Med det i tankerne er vi nødt til at finde en måde at sikre, at vores mappe eksisterer i sidste ende, enten oprettede vi den, eller den var allerede der. Til dette formål kunne vi bruge isDirectory () metode:

newDirectory.mkdir () || newDirectory.isDirectory ()

På den måde sørger vi for, at den mappe, vi har brug for, er der.

3. Opret flere indlejrede mapper

Det, vi hidtil har set, fungerer godt i en enkelt mappe, men hvad sker der, hvis vi vil oprette flere indlejrede mapper?

I det følgende eksempel ser vi det Fil :: mkdir fungerer ikke for det:

Fil newDirectory = ny fil (TEMP_DIRECTORY, "ny_katalog"); Fil nestedDirectory = ny fil (newDirectory, "nested_directory"); assertFalse (newDirectory.exists ()); assertFalse (nestedDirectory.exists ()); assertFalse (nestedDirectory.mkdir ());

Som den ny_katalog eksisterer ikke mkdir skaber ikke det underliggende indlejret_katalog.

Men den Fil klasse giver os en anden metode til at opnå det - mkdirs (). Denne metode vil opføre sig som mkdir () men vil også oprette alle de ikke-eksisterende overordnede mapper.

I vores tidligere eksempel vil dette betyde, at du ikke kun opretter indlejret_katalog, men også ny_katalog.

Bemærk, at indtil nu har vi brugt Fil (fil, streng) konstruktør, men vi kan også bruge Fil (streng) konstruktør og videregive hele stien til vores fil ved hjælp af File.separator at adskille de forskellige dele af stien:

Fil newDirectory = ny fil (System.getProperty ("java.io.tmpdir") + File.separator + "new_directory"); Fil nestedDirectory = ny fil (newDirectory, "nested_directory"); assertFalse (newDirectory.exists ()); assertFalse (nestedDirectory.exists ()); assertTrue (nestedDirectories.mkdirs ());

Som vi kan se, oprettes mapperne som forventet. Desuden vender metoden kun tilbage rigtigt når mindst en mappe oprettes. hvad angår mkdir () metode, vender den tilbage falsk i de andre tilfælde.

Derfor betyder dette, at mkdirs () metode, der bruges i et bibliotek, hvis forældre eksisterer, fungerer på samme måde som mkdir () metode.

4. Konklusion

I denne artikel har vi set to metoder, der giver os mulighed for at oprette mapper i Java. Den første, mkdir (), målretter oprettelsen af ​​et enkelt bibliotek, forudsat at dets forældre allerede eksisterer. Den anden, mkdirs (), er i stand til at oprette et bibliotek såvel som dets ikke-eksisterende forældre.

Koden til denne artikel kan findes på vores GitHub.


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