Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 5920 razy

Klasa QFile umożliwia zapis i odczyt danych do pliku ale również wykonywanie operacji zmiany nazwy, usuwania czy kopiowania pliku z jednej lokalizacji do drugiej. Aby możliwe było korzystanie z tej klasy konieczne jest załączenie pliku QFile.

Funkcje statyczne

Warte uwagi są statyczne funkcje klasy QFile, oto niektóre z nich:

  • copy - kopiuje plik z jednego miejsca do drugiego;
  • decodeName - zamiana kodowania nazwy pliku z UTF-8 do kodu ASCII;
  • encodeName - zamienia nazwę pliku zapisaną w ASCII na nazwę zapisaną w kodowaniu UTF-8;
  • exists - sprawdza, czy plik istnieje;
  • permissions - zwraca ustawione uprawnienia do pliku;
  • remove - usuwa podany plik;
  • rename - zmienia nazwę pliku;
  • resize - zmienia rozmiar pliku;
  • setPermissions - ustawia uprawnienia przypisane do pliku

Tworzenie obiektu klasy QFile

Można utworzyć obiekt klasy za pomocą konstruktora bezparametrowego lub z konstruktorem od razu ustawiającym ścieżkę do pliku:

QFile file; file.setFileName("C:/file"); // ustawienie ścieżki do pliku za pomocą metody setFileName QFile file2("C:/file2"); // ustawienie ścieżki do pliku za pomocą konstruktora

Sprawdzanie czy plik istnieje

Po utworzeniu obiektu z przypisaną mu ścieżką można sprawdzić za pomocą metody exists, czy plik istnieje:

QFile file("C:/file"); qDebug() << file.exists(); // zwróci false, gdy plik nie istnieje

Kopiowanie pliku do wskazanej lokalizacji

Obiekty klasy QFile mają również metodę copy umożliwiającą łatwe kopiowanie pliku z jednego miejsca na drugie:

QFile file("C:/file"); file.copy("C:/Folder/file");

Zmiana nazwy pliku

Metoda rename umożliwia zmianę nazwy pliku:

QFile file("C:/file"); file.rename("file2"); // zmienia nazwę pliku

Ważne aby pamiętać, że metoda ta nie zmieni nazwy pliku gdy plik o podanej nazwie istnieje. Funkcja zwraca true, gdy operacja się powiedzie.

Usuwanie pliku

Metoda remove usuwa plik:

QFile file("C:/file"); file.remove(); // usuwa plik C:/file

Zapis danych do pliku

W celu zapisania danych do pliku należy utworzyć obiekt klasy QStringText będącym strumieniem danych, dzięki któremu możliwe będzie łatwe zapisywanie danych do pliku:

QFile file("file.txt"); if(file.open(QIODevice::WriteOnly | QIODevice::Text)){ // metoda open w otwiera plik w trybie tylko do odczytu z zamianą znaków \r\n ma \n QTextStream out(&file); out << "Some text to write"; // zapis danych do pliku file.close(); }

Odczyt danych z pliku

W celu zapisania danych do pliku należy utworzyć obiekt klasy QStringText będącym strumieniem danych, dzięki któremu możliwe będzie łatwe zapisywanie danych do pliku:

QFile file("file.txt"); if(file.open(QIODevice::ReadOnly | QIODevice::Text)){ // metoda open w otwiera plik w trybie tylko do odczytu z zamianą znaków \r\n ma \n QTextStream in(&file); while(!in.atEnd()){ // dopóki nie osiągnięto końca pliku qDebug() << in.readLine(); // odczyt pojedynczej linii tekstu } file.close(); }

Można też nie bawić się i od razu wczytać całość pliku:

QFile file("file.txt"); if(file.open(QIODevice::ReadOnly | QIODevice::Text)){ // metoda open w otwiera plik w trybie tylko do odczytu z zamianą znaków \r\n ma \n QTextStream in(&file); qDebug() << in.readAll(); file.close(); }
Strony powiązane
strony powiązane
  1. doc.qt.io/qt-5/qfile.html - opis klasy QFile na stronie dokumentacji biblioteki Qt
Layout wykonany przez autora strony, wszelkie prawa zastrzeżone. Jakiekolwiek użycie części lub całości grafik znajdujących się na tej stronie bez pisemnej zgody jej autora surowo zabronione.