Gyakorlati alapok II.

Alapszintű filekezelő műveletek

 

Bevezetésképpen ismételjük meg filekezeléses kódcsontvázunkat:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 



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:
 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 


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
 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

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:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 


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():
 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 


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:
 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 


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:
 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 


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:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 


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:
 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 


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:
 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 


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)