Files-apuohjelma: lue, kirjoita, kopioi ja siirrä
Käytä metodeja Files.readString, writeString, copy, move ja delete yleisiin tiedostotoimintoihin.
Files-apuohjelma: lue, kirjoita, kopioi ja siirrä on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Java Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Java Academy-kurssilla on yhteensä 4 oppituntia.
Files-luokka
java.nio.file.Files-luokka tarjoaa staattisia apumetodeja tiedostojen lukemiseen, kirjoittamiseen, kopioimiseen, siirtämiseen ja kyselyihin. Se korvaa monisanaisen FileInputStream/FileOutputStream-koodin toiston.
import java.nio.file.*;
import java.io.IOException;
Path file = Path.of("example.txt");
// All Files methods throw IOException — handle or propagateTiedostojen lukeminen
Nykyaikaiset metodit tiedoston koko sisällön lukemiseen:
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);Tiedostojen kirjoittaminen
Kirjoita merkkijono tai rivikokoelma tiedostoon yhdellä kutsulla:
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);Tiedoston ominaisuuksien tarkistaminen
Hae tiedoston metatiedot avaamatta tiedostoa:
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));Tiedostojen kopioiminen
Files.copy(source, target) kopioi tiedoston. Käytä StandardCopyOption-luokkaa toiminnan ohjaamiseen:
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);Tiedostojen siirtäminen ja nimeäminen uudelleen
Files.move() siirtää tiedoston tai nimeää sen uudelleen. Atominen siirto on mahdollinen ATOMIC_MOVE-asetuksella:
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);Tiedostojen poistaminen
Kaksi poistometodia — toinen heittää poikkeuksen, jos kohdetta ei löydy, toinen ei:
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);Hakemistojen luominen
Luo hakemistoja, mukaan lukien kaikki puuttuvat välihakemistot:
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"));Väliaikaistiedostot ja -hakemistot
Luo väliaikaistiedostoja turvallisesti — JVM voi siivota ne:
// 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);Rivien käsittely Files.lines-metodilla
Files.lines() palauttaa laiskan Stream<String>-virran — se sopii suurille tiedostoille paremmin kuin readAllLines, koska se ei lataa kaikkea muistiin:
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 automaticallyClasspath-resurssien lukeminen
Yhdistä getClass().getResourceAsStream() ja NIO-kopiointi resurssien lataamista varten:
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);
}Pikatarkistus
Mitä metodia pitäisi käyttää suuren lokitiedoston lukemiseen, kun kaikkia rivejä ei haluta ladata muistiin samanaikaisesti?
Kertaus: Files-apumetodit
Tärkeimmät asiat:
- Files.readString/readAllLines/readAllBytes — lukevat koko tiedoston
- Files.writeString/write — kirjoittavat merkkijonon tai rivejä
- Files.copy/move ja StandardCopyOption — kopioimiseen, uudelleennimeämiseen ja siirtämiseen
- Files.delete/deleteIfExists — turvalliseen poistamiseen
- Files.lines — laiska virta suurille tiedostoille (käytä try-with-resources-rakennetta)
Opi Java tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 104
- Oppitunnit
- 374
Usein kysytyt kysymykset
Onko oppitunti ”Files-apuohjelma: lue, kirjoita, kopioi ja siirrä” ilmainen?
Kyllä – oppitunnin ”Files-apuohjelma: lue, kirjoita, kopioi ja siirrä” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Java Academy-kurssin, päivitä CoddyKit PROhon. Java Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Files-apuohjelma: lue, kirjoita, kopioi ja siirrä”?
Käytä metodeja Files.readString, writeString, copy, move ja delete yleisiin tiedostotoimintoihin. Harjoittelet Java Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Java Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Java Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Files-apuohjelma: lue, kirjoita, kopioi ja siirrä”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Java Academy-oppitunnilla?
Kyllä. Jokainen Java Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Path: tiedostojen sijaintien esittäminen
- Files-apuohjelma: lue, kirjoita, kopioi ja siirrä
- Hakemistopuiden läpikäynti Files.walk-metodilla
- WatchService: tiedostomuutosten valvonta