Qt - klasa QFile i operacje we/wy na pliku
Stronę tą wyświetlono już: 4407 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();
- }

Tytuł:
Architektura oprogramowania bez tajemnic. Wykorzystaj język C++ do tworzenia wydajnych aplikacji i systemów
Autor:
Adrian Ostrowski, Piotr Gaczkowski

Tytuł:
Opus magnum C++ 11. Programowanie w języku C++. Wydanie II poprawione (komplet)
Autor:
Jerzy Grębosz

Tytuł:
Programowanie wieloplatformowe z C++ i wxWidgets 3
Autor:
Bartosz W. Warzocha

Tytuł:
Język C++ i przetwarzanie współbieżne w akcji. Wydanie II
Autor:
Anthony Williams

Tytuł:
C++ dla bystrzaków. Wydanie VII
Autor:
Stephen R. Davis

Tytuł:
Tablice informatyczne. Podstawy C++
Autor:
Radosław Sokół

Tytuł:
Opus magnum C++11. Programowanie w języku C++ (komplet)
Autor:
Jerzy Grębosz

Tytuł:
OpenCV 3. Komputerowe rozpoznawanie obrazu w C++ przy użyciu biblioteki OpenCV
Autor:
Adrian Kaehler, Gary Bradski

Tytuł:
C++ w 24 godziny. Wydanie VI
Autor:
Rogers Cadenhead, Jesse Liberty

Tytuł:
C++ Optymalizacja kodu. Sprawdzone techniki zwiększania wydajności
Autor:
Guntheroth Kurt