Gyakorlati alapok II.
Alapszintű filekezelő műveletek
Bevezetésképpen ismételjük meg filekezeléses kódcsontvázunkat:
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
}
}
Első filekezelő műveletünk természetesen egy egyszerű file létrehozása lesz:
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
File file = new File("D:\\proba.txt");
file.createNewFile();
System.out.println(file.getAbsolutePath());
}
}
Végeredmény:
D:\\proba.txt + a file a D: meghajtón
Előfordulhat, hogy az aktuális operációs rendszer nem engedélyez fileműveleteket a C: meghajtón, hiszen ez alapvetően az operációs rendszer számára van fenntartva. Ekkor a hibaüzenet kivételdobás lesz Access denied címkével. A megoldás egy másik meghajtó vagy partíció használata, természetesen más betűjelzéssel.
Jól láthatók a file
létrehozásának lépései, amely során ügyelnünk kell a kívánt
létrehozási-elérési út pontos begépelésére (itt
D:\\proba.txt)…
File file = new File("D:\\proba.txt");
file.createNewFile();
...valamint a getAbsolutePath() metódussal
lekérdezzük a file elérési útját is. Fontos azonban jelezni, hogy ez a metódus
ugyanezt fogja mutatni, ha a file nem kerül létrehozásra, mert nem aktiváltuk
a createNewFile() metódust:
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
File file = new File("D:\\proba.txt");
System.out.println(file.getAbsolutePath());
}
}
Végeredmény:
D:\\proba.txt
Érdemes tehát egy másik metódussal is leellenőriznünk a file létezését; ez a
metódus a boolean típusú
exits():
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
File file = new File("D:\\proba.txt");
System.out.println(file.getAbsolutePath());
if(file.exists()) {
System.out.println("A file
létezik.");
} else {
System.out.println("A file nem
létezik.");
}
}
}
Végeredmény:
D:\\proba.txt
A file nem létezik.
A létrehozott állományt a delete() metódussal
törölhetjük. Alábbiakban ezt a már ismertetett exits()
metódussal le is ellenőrizzük:
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
File file = new File("D:\\proba.txt");
file.createNewFile();
System.out.println(file.getAbsolutePath());
if(file.exists()) {
System.out.println("A file
létezik.");
} else {
System.out.println("A file nem
létezik.");
}
file.delete();
if(file.exists()) {
System.out.println("A file
létezik.");
} else {
System.out.println("A file nem
létezik.");
}
}
}
Végeredmény:
D:\\proba.txt
A file létezik.
A file nem létezik.
Érdekes metódus a deleteOnExit(). Elnevezéséből
következően a létrehozott file-t a Java-alkalmazás szabályos bezárásakor
törölni fogja. A metódus tehát ideális megoldás átmeneti file-ok használata
során:
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
File file = new File("D:\\proba.txt");
file.createNewFile();
System.out.println(file.getAbsolutePath());
if(file.exists()) {
System.out.println("A file
létezik.");
} else {
System.out.println("A file nem
létezik.");
}
file.deleteOnExit();
}
}
Végeredmény:
Szabályos kilépéskor a proba.txt törlése a D: meghajtóról
Egy egyszerű for ciklussal és a getName() metódus
kombinációjával a megadott elérési úton található összes állományt
kilistázhatjuk:
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
for (File file : new File("D:\\").listFiles()) {
System.out.println(file.getName());
}
}
}
Végeredmény:
$RECYCLE.BIN
.~lock.Jegyzetek.odt#
Angol.odt
Google
Java
Jegyzetek.odt
System Volume Information
Weird Metronome.exe
WWW
Nyilvánvalóan némelyikük könyvtár, némelyikük file. Vegyük észre: mi csak arra
kérdeztünk rá, hogy mi található a D: meghajtón. A
boolean típusú isDirectory() és
isFile() metódusok használatával pontosítani
tudjuk a lekérdezést:
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
for (File file : new File("D:\\").listFiles()) {
if(file.isDirectory()) {
System.out.println(file.getName() + " (directory)");
}
else
System.out.println(file.getName() + " (file)");
}
}
}
Végeredmény:
! - Driver (directory)
! - OSIRE (directory)
$RECYCLE.BIN (directory)
Angol.odt (file)
Google (directory)
Java (directory)
Jegyzetek.odt (file)
System Volume Information (directory)
Weird Metronome.exe (file)
WWW (directory)
A fenti kódban az isDirectory() metódust
használtuk fel. Természetesen az isfile() is
ugyanazon végeredményt fogja szolgáltatni:
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
for (File file : new File("D:\\").listFiles()) {
if(file.isFile()) {
System.out.println(file.getName() + " (file)");
}
else
System.out.println(file.getName() + " (directory)");
}
}
}
Végeredmény:
! - Driver (directory)
! - OSIRE (directory)
$RECYCLE.BIN (directory)
Angol.odt (file)
Google (directory)
Java (directory)
Jegyzetek.odt (file)
System Volume Information (directory)
Weird Metronome.exe (file)
WWW (directory)