Files-verktøyet: lese, skrive, kopiere og flytte
Bruk Files.readString, writeString, copy, move og delete til vanlige filoperasjoner.
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 propagateLese 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 automaticallyLese 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)
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
- Path: representere filplasseringer
- Files-verktøyet: lese, skrive, kopiere og flytte
- Gå gjennom katalogtrær med Files.walk
- WatchService: overvåke filendringer