Java Academy · leksjon

Files-verktøyet: lese, skrive, kopiere og flytte

Bruk Files.readString, writeString, copy, move og delete til vanlige filoperasjoner.

Leksjon 2 av 413 trinn

Files-verktøyet: lese, skrive, kopiere og flytte er en gratis leksjon i Java Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Java Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Java Academy inneholder totalt 4 leksjoner.

Files-klassen

Klassen java.nio.file.Files tilbyr statiske hjelpefunksjoner for å lese, skrive, kopiere, flytte og undersøke filer. Den erstatter omstendelig standardkode med FileInputStream/FileOutputStream.

import java.nio.file.*;
import java.io.IOException;

Path file = Path.of("example.txt");
// All Files methods throw IOException — handle or propagate

Lese filer

Moderne metoder for å lese hele innholdet i en fil:

Path path = Path.of("notes.txt");

// Read as a single String (Java 11+)
String content = Files.readString(path);
System.out.println(content);

// Read as List of lines
List<String> lines = Files.readAllLines(path);
lines.forEach(System.out::println);

// Read as byte array
byte[] bytes = Files.readAllBytes(path);

Skrive filer

Skriv en String eller en samling linjer til en fil i ett kall:

Path out = Path.of("output.txt");

// Write a String (overwrites by default)
Files.writeString(out, "Hello, NIO.2!");

// Write with StandardOpenOption.APPEND
Files.writeString(out, "\nAppended line", StandardOpenOption.APPEND);

// Write lines
List<String> lines = List.of("line1", "line2", "line3");
Files.write(out, lines);

Kontrollere filegenskaper

Undersøk filmetadata uten å åpne filen:

Path path = Path.of("data.txt");

System.out.println(Files.exists(path));       // true/false
System.out.println(Files.isRegularFile(path)); // true if not dir
System.out.println(Files.isDirectory(path));   // true if dir
System.out.println(Files.isReadable(path));    // readable?
System.out.println(Files.size(path));          // bytes
System.out.println(Files.getLastModifiedTime(path));

Kopiere filer

Files.copy(source, target) kopierer en fil. Bruk StandardCopyOption for å styre virkemåten:

Path src = Path.of("original.txt");
Path dst = Path.of("backup.txt");

// Throws if destination exists (default)
Files.copy(src, dst);

// Overwrite if exists:
Files.copy(src, dst, StandardCopyOption.REPLACE_EXISTING);

// Copy preserving file timestamps:
Files.copy(src, dst, StandardCopyOption.COPY_ATTRIBUTES);

Flytte og gi filer nytt navn

Files.move() flytter en fil eller gir den nytt navn. Atomisk flytting er mulig med ATOMIC_MOVE:

Path from = Path.of("temp.txt");
Path to   = Path.of("archive/report_2024.txt");

Files.move(from, to, StandardCopyOption.REPLACE_EXISTING);

// Rename in same directory:
Path renamed = from.resolveSibling("new_name.txt");
Files.move(from, renamed, StandardCopyOption.REPLACE_EXISTING);

Slette filer

To slettemetoder – én utløser en feil hvis filen ikke finnes, og én gjør ikke det:

Path file = Path.of("temp.txt");

// Throws NoSuchFileException if file doesn't exist:
Files.delete(file);

// Returns false if file didn't exist (no exception):
boolean deleted = Files.deleteIfExists(file);
System.out.println("Deleted: " + deleted);

Opprette kataloger

Opprett kataloger, inkludert alle mellomliggende kataloger:

Path dir = Path.of("output/reports/2024");

// Creates all missing intermediate directories:
Files.createDirectories(dir);

// Creates a single directory (fails if parent missing):
Files.createDirectory(Path.of("output/reports/2025"));

Midlertidige filer og kataloger

Opprett midlertidige filer på en trygg måte – JVM-en kan rydde dem opp:

// Temp file in default temp directory
Path tmp = Files.createTempFile("prefix_", ".txt");
Files.writeString(tmp, "temp data");
System.out.println(tmp); // something like /tmp/prefix_12345.txt

// Temp directory
Path tmpDir = Files.createTempDirectory("work_");
System.out.println(tmpDir);

Strømme linjer med Files.lines

Files.lines() returnerer en lat Stream<String> – bedre enn readAllLines for store filer fordi alt ikke lastes inn i minnet:

try (var stream = Files.lines(Path.of("large.log"))) {
    long errorCount = stream
        .filter(l -> l.contains("ERROR"))
        .count();
    System.out.println("Errors: " + errorCount);
} // stream (and underlying reader) closed automatically

Lese ressurser fra classpath

Kombiner med getClass().getResourceAsStream() og NIO-kopiering for å laste inn ressurser:

try (var in = getClass().getResourceAsStream("/config.json")) {
    Path tmp = Files.createTempFile("config", ".json");
    Files.copy(in, tmp, StandardCopyOption.REPLACE_EXISTING);
    String json = Files.readString(tmp);
    System.out.println(json);
}

Hurtigsjekk

Hvilken metode bør brukes for å lese en stor loggfil uten å laste inn alle linjene i minnet samtidig?

Oppsummering: Files-verktøyet

Viktigste punkter:

  • Files.readString/readAllLines/readAllBytes – leser hele filen
  • Files.writeString/write – skriver en streng eller linjer
  • Files.copy/move med StandardCopyOption – kopierer, gir nytt navn eller flytter
  • Files.delete/deleteIfExists – trygg sletting
  • Files.lines – lat strøm for store filer (bruk try-with-resources)
Gratis å komme i gang

Lær deg Java med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
104
Leksjoner
374

Ofte stilte spørsmål

Er leksjonen «Files-verktøyet: lese, skrive, kopiere og flytte» gratis?

Ja – hele teksten i «Files-verktøyet: lese, skrive, kopiere og flytte» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Java Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Java Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Files-verktøyet: lese, skrive, kopiere og flytte»?

Bruk Files.readString, writeString, copy, move og delete til vanlige filoperasjoner. Du øver på Java Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Java Academy?

Ingen tidligere erfaring er nødvendig. Java Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Files-verktøyet: lese, skrive, kopiere og flytte»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Java Academy-leksjonen?

Ja. Alle Java Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Path: representere filplasseringer
  2. Files-verktøyet: lese, skrive, kopiere og flytte
  3. Gå gjennom katalogtrær med Files.walk
  4. WatchService: overvåke filendringer
← Tilbake til Java Academy