Qt - klasa QFile i operacje we/wy na pliku

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 5503 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:

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
Propozycje książek