CodeGym /Blog Java /Random-PL /Klasa pliku Java.io.File
John Squirrels
Poziom 41
San Francisco

Klasa pliku Java.io.File

Opublikowano w grupie Random-PL
W wielu przypadkach program w swojej pracy musi uzyskać dostęp do pewnych plików. Przykładowo dane użytkownika mogą zostać zapisane w jakimś zewnętrznym pliku i aby je odczytać, program musi umieć z nimi pracować — otwierać, czytać dane, ewentualnie edytować i zamykać. W tym celu język programowania Java ma klasę Java.io.File . W tym artykule zastanowimy się, jaki to rodzaj klasy i podamy przykład pracy z nią.

Co to jest klasa plików Java

Klasa File jest zdefiniowana w pakiecie java.io i nie działa bezpośrednio ze strumieniami. Klasa Java File służy do zarządzania informacjami o plikach i katalogach. Jak wiadomo, na poziomie systemu operacyjnego pliki i katalogi są różnymi obiektami. Jednak w Javie oba są opisane przez tę samą klasę File . Być może zastanawiasz się, dlaczego nie używać po prostu ciągów znaków do odwoływania się do plików? Po pierwsze dlatego, że dostęp do plików jest inny w różnych systemach operacyjnych.

Konstruktory klas plików

W zależności od tego, czy obiekt klasy Java.io.File ma reprezentować plik, czy katalog, do utworzenia obiektu możemy użyć jednego z konstruktorów: File(String pathname) w tym przypadku konstruktor tworzy nową instancję File poprzez konwersję podanej ścieżki ciąg znaków w abstrakcyjną nazwę ścieżki. File(String myPath, String myString) ten konstruktor tworzy nową instancję File na podstawie ciągu nazwy ścieżki myPath i ciągu nazwy ścieżki myString. Plik (nadrzędny plik, nazwa ciągu) tworzy nową instancję pliku na podstawie abstrakcyjnej ścieżki pliku i ciągu nazwy ścieżki. Konstruktor File(URI uri) w tym przypadku tworzy nową instancję File poprzez konwersję podanego pliku: URI na abstrakcyjną ścieżkę. URI to klasa Java reprezentująca odwołanie do Uniform Resource Identifier (URI). Oto przykład różnych konstruktorów klas Java.io.File :
import java.io.File;
import java.net.URI;
import java.net.URISyntaxException;

public class FileTest {
   public static void main(String[] args) throws URISyntaxException {
       File myFile1 = new File("d:\\MyCat");
       File myFile2 = new File ("d:\\MyCat", "cat.txt");
       File myFile3 = new File(myFile1, "cat.txt");
       URI uri = new URI ("https://docs.oracle.com/javase/7/docs/api/java/net/URI.html");
       File myFile4 = new File(uri);
   }
}

Metody klasy plików

Klasa Java File posiada wiele metod pozwalających na manipulowanie plikami i katalogami. Rozważmy niektóre z nich:
  • boolean createNewFile() tworzy nowy plik na ścieżce przekazanej konstruktorowi. Zwraca wartość true, jeśli się powiedzie, w przeciwnym razie false

  • boolean Delete() usuwa katalog lub plik ze ścieżki przekazanej konstruktorowi. Zwraca wartość true w przypadku pomyślnego usunięcia

  • boolean istnieje() sprawdza, czy plik lub katalog istnieje w ścieżce określonej w konstruktorze. Jeśli plik lub katalog istnieje, zwraca wartość true, w przeciwnym razie zwraca wartość false

  • String getAbsolutePath() zwraca ścieżkę bezwzględną dla ścieżki przekazanej do konstruktora obiektu

  • String getName() zwraca krótką nazwę pliku lub katalogu

  • String getParent() zwraca nazwę katalogu nadrzędnego

  • boolean isDirectory() zwraca wartość true, jeśli podana ścieżka zawiera katalog

  • boolean isFile() zwraca wartość true, jeśli pod podaną ścieżką znajduje się plik

  • boolean isHidden() zwraca wartość true, jeśli katalog lub plik jest ukryty

  • longlength() zwraca rozmiar pliku w bajtach

  • long lastModified() zwraca czas ostatniej modyfikacji pliku lub katalogu. Wartość reprezentuje liczbę milisekund, które upłynęły od epoki Uniksa

  • String[] list() zwraca tablicę plików i podkatalogów znajdujących się w określonym katalogu

  • File[] listFiles() zwraca tablicę plików i podkatalogów znajdujących się w określonym katalogu

  • boolean mkdir() tworzy nowy katalog i zwraca wartość true, jeśli się powiedzie

  • boolean renameTo(File dest) zmienia nazwę pliku lub katalogu

Niektóre funkcje klasy Java File

  • Ścieżka (abstrakcyjna lub ciąg znaków) może być bezwzględna lub względna. Element nadrzędny ścieżki abstrakcyjnej można pobrać, wywołując metodę getParent() tej klasy.

  • Na początek powinniśmy stworzyć obiekt klasy File przekazując mu nazwę pliku lub katalogu. System plików może nakładać ograniczenia na pewne operacje na rzeczywistym obiekcie systemu plików, takie jak odczyt, zapis i wykonywanie. Ograniczenia te nazywane są uprawnieniami dostępu.

  • Instancje klasy File są niezmienne. Oznacza to, że po utworzeniu pliku abstrakcyjna ścieżka reprezentowana przez obiekt File nigdy się nie zmieni.

Przykłady kodu klasy pliku

Stwórzmy program współpracujący z katalogami. W pierwszej kolejności powinien utworzyć katalog pod podaną ścieżką a następnie utworzyć nowy plik i sprawdzić czy plik i katalog istnieją.
import java.io.File;
import java.io.IOException;

public class FileTest2 {
   public static void main(String[] args) throws IOException {

       //create a directory using mkdir() File class method
       File dir = new File("d:\\MyDir");
       boolean created = dir.mkdir();
       if(created)
           System.out.println("Folder has been created...");
       else
           System.out.println("Folder hasn't been created...");
       File myFile = new File("d:\\MyDir\\cat.txt");
       myFile.createNewFile();
       System.out.println("File name: " + myFile.getName());
       System.out.println("Parent folder: " + myFile.getParent());
       if(myFile.exists())
           System.out.println("File exists");
       else
           System.out.println("File not found");
      }
}
Oto dane wyjściowe:
Folder został utworzony... Nazwa pliku: cat.txt Folder nadrzędny: d:\MyDir Plik istnieje
Przy okazji, jeśli zrobiłeś wszystko dobrze, możesz znaleźć nowy katalog i plik na swoim komputerze. Napiszmy teraz program, w którym będziemy mogli pracować z utworzonym katalogiem i plikiem. Tutaj używamy niektórych metod opisanych powyżej.
import java.io.File;

public class FileTest3 {

   public static void main(String[] args) {

       File dir = new File("d:\\MyDir");
       File myFile = new File("d:\\MyDir\\cat.txt");
       System.out.println("File name: " + myFile.getName());
       System.out.println("Parent folder: " + myFile.getParent());
       if (myFile.exists())
           System.out.println("File exists");
       else
           System.out.println("File not found");

       System.out.println("Absolute path: " + myFile.getAbsolutePath());

       if (myFile.exists()) {
           System.out.println("Is writable: " + myFile.canWrite());
           System.out.println("Is readable: " + myFile.canRead());
           System.out.println("Is a directory: " + myFile.isDirectory());
           System.out.println("myFile Size in bytes = " + myFile.length());

       }
   }
}
Dane wyjściowe programu to:
Nazwa pliku: cat.txt Folder nadrzędny: d:\MójKatalog Plik istnieje Ścieżka bezwzględna: d:\MójKatalog\cat.txt Jest zapisywalny: true Czytelny: true Jest katalogiem: false MójPlik Rozmiar w bajtach = 0
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION