Operacje we / wy na plikach
Potrzebujemy plików do przechowywania danych wyjściowych programu po jego zakończeniu. Korzystając z plików, możemy uzyskać dostęp do powiązanych informacji za pomocą różnych poleceń w różnych językach.
Oto lista niektórych operacji, które można wykonać na pliku -
- Tworzenie nowego pliku
- Otwieranie istniejącego pliku
- Czytanie zawartości pliku
- Wyszukiwanie danych w pliku
- Zapisywanie do nowego pliku
- Aktualizacja zawartości do istniejącego pliku
- Usuwanie pliku
- Zamknięcie pliku
Zapisywanie do pliku
Aby zapisać zawartość do pliku, najpierw musimy otworzyć wymagany plik. Jeśli określony plik nie istnieje, zostanie utworzony nowy plik.
Zobaczmy, jak zapisać zawartość do pliku za pomocą C ++.
Przykład
#include <iostream>
#include <fstream>
using namespace std;
int main () {
ofstream myfile;
myfile.open ("Tempfile.txt", ios::out);
myfile << "Writing Contents to file.\n";
cout << "Data inserted into file";
myfile.close();
return 0;
}
Note -
fstream jest klasą strumienia używaną do sterowania operacjami odczytu / zapisu plików.
ofstream jest klasą strumienia używaną do zapisywania zawartości do pliku.
Zobaczmy, jak zapisać zawartość do pliku za pomocą Erlang, który jest funkcjonalnym językiem programowania.
-module(helloworld).
-export([start/0]).
start() ->
{ok, File1} = file:open("Tempfile.txt", [write]),
file:write(File1,"Writting contents to file"),
io:fwrite("Data inserted into file\n").
Note -
Aby otworzyć plik, którego musimy użyć, open(filename,mode).
Składnia zapisu zawartości do pliku: write(filemode,file_content).
Output - Kiedy uruchomimy ten kod, do pliku zostanie zapisany komunikat „Zapisywanie zawartości do pliku” Tempfile.txt. Jeśli plik ma jakąkolwiek istniejącą zawartość, zostanie nadpisany.
Czytanie z pliku
Aby odczytać z pliku, najpierw musimy otworzyć określony plik w reading mode. Jeśli plik nie istnieje, odpowiednia metoda zwraca wartość NULL.
Poniższy program pokazuje, jak odczytać zawartość pliku w formacie C++ -
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main () {
string readfile;
ifstream myfile ("Tempfile.txt",ios::in);
if (myfile.is_open()) {
while ( getline (myfile,readfile) ) {
cout << readfile << '\n';
}
myfile.close();
} else
cout << "file doesn't exist";
return 0;
}
Wytworzy następujący wynik -
Writing contents to file
Note- W tym programie otworzyliśmy plik tekstowy w trybie odczytu za pomocą „ios :: in”, a następnie wydrukowaliśmy jego zawartość na ekranie. Użyliśmywhile pętla, aby odczytać zawartość pliku wiersz po wierszu przy użyciu metody „getline”.
Poniższy program pokazuje, jak wykonać tę samą operację przy użyciu Erlang. Tutaj użyjemyread_file(filename) metoda, aby odczytać całą zawartość z określonego pliku.
-module(helloworld).
-export([start/0]).
start() ->
rdfile = file:read_file("Tempfile.txt"),
io:fwrite("~p~n",[rdfile]).
Wytworzy następujący wynik -
ok, Writing contents to file
Usuń istniejący plik
Możemy usunąć istniejący plik za pomocą operacji na plikach. Poniższy program pokazuje, jak usunąć istniejący plikusing C++ -
#include <stdio.h>
int main () {
if(remove( "Tempfile.txt" ) != 0 )
perror( "File doesn’t exist, can’t delete" );
else
puts( "file deleted successfully " );
return 0;
}
Wytworzy następujący wynik -
file deleted successfully
Poniższy program pokazuje, jak można wykonać tę samą operację w Erlang. Tutaj użyjemy metodydelete(filename) aby usunąć istniejący plik.
-module(helloworld).
-export([start/0]).
start() ->
file:delete("Tempfile.txt").
Output - Jeśli plik „Tempfile.txt” istnieje, zostanie usunięty.
Określanie rozmiaru pliku
Poniższy program pokazuje, jak określić rozmiar pliku za pomocą języka C ++. Tutaj funkcjafseek ustawia wskaźnik pozycji powiązany ze strumieniem na nową pozycję, natomiast ftell zwraca bieżącą pozycję w strumieniu.
#include <stdio.h>
int main () {
FILE * checkfile;
long size;
checkfile = fopen ("Tempfile.txt","rb");
if (checkfile == NULL)
perror ("file can’t open");
else {
fseek (checkfile, 0, SEEK_END); // non-portable
size = ftell (checkfile);
fclose (checkfile);
printf ("Size of Tempfile.txt: %ld bytes.\n",size);
}
return 0;
}
Output - Jeśli plik „Tempfile.txt” istnieje, to pokaże swój rozmiar w bajtach.
Poniższy program pokazuje, jak wykonać tę samą operację w Erlang. Tutaj użyjemy metodyfile_size(filename) aby określić rozmiar pliku.
-module(helloworld).
-export([start/0]).
start() ->
io:fwrite("~w~n",[filelib:file_size("Tempfile.txt")]).
Output- Jeśli plik „Tempfile.txt” istnieje, to pokaże swój rozmiar w bajtach. W przeciwnym razie wyświetli „0”.