Διαφάνειες παρουσίασης #9

Post on 06-Jan-2016

64 views 0 download

description

Διαφάνειες παρουσίασης #9. Διαχείριση αρχείων στην ANSI C Διαχείριση αρχείων στο Unix Ροές δεδομένων εισόδου / εξόδου στη C++. Διαχείριση αρχείων στην ANSI C(i). Βασικός τύπος FILE * fp; δείκτης σε αρχείο Άνοιγμα & κλείσιμο αρχείων - PowerPoint PPT Presentation

Transcript of Διαφάνειες παρουσίασης #9

ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ

nickie@softlab.ntua.grΔιδάσκων: Νίκος Παπασπύρου

http://www.softlab.ntua.gr/~nickie/TUC/log201/

1Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ

Διαφάνειες παρουσίασης #9

Διαχείριση αρχείων στην ANSI CΔιαχείριση αρχείων στο UnixΡοές δεδομένων εισόδου / εξόδου στη C++

2Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ

Διαχείριση αρχείων στην ANSI C (i)

Βασικός τύπος <stdio.h>

FILE * fp; δείκτης σε αρχείο

Άνοιγμα & κλείσιμο αρχείωνFILE * fopen (const char * name, const char * mode);

FILE * freopen (const char * name, const char * mode, FILE * oldf);

FILE * fdopen (int fd, const char * mode);

int fclose (FILE * fp);

int fflush (FILE * fp);

3Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ

Διαχείριση αρχείων στην ANSI C (ii)

Ανάγνωση & εγγραφήint fputc (int c, FILE * fp);

int fgetc (FILE * fp);

int fputs (const char * s, FILE * fp);

char * fgets (char * s, int n, FILE * fp);

int fprintf (FILE * fp, const char * format, ...);

int fscanf (FILE * fp, const char * format, ...);

4Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ

Διαχείριση αρχείων στην ANSI C (iii)

Ανάγνωση & εγγραφή δυαδικών δεδομένωνsize_t fwrite (const void * p,size_t size, size_t num, FILE * fp);

size_t fread (void * p,size_t size, size_t num, FILE * fp);

Τέλος αρχείουint feof (FILE * fp);

Τυχαία προσπέλαση αρχείωνint fseek (FILE * fp, long offset,int origin);

long ftell (FILE * fp);

5Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ

Διαχείριση αρχείων στο Unix (i)

Βασικός τύπος<io.h>

int fd; περιγραφή αρχείου (file

descriptor)

Άνοιγμα αρχείων <fcntl.h>

int open (const char * name, int mode, ...);

int creat (const char * name, int mode);

Κλείσιμο αρχείων <unistd.h>

int close (int fd);

6Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ

Διαχείριση αρχείων στο Unix (ii)

Ανάγνωση & εγγραφή <unistd.h>ssize_t write (int fd, const void * p, size_t size);

ssize_t read (int fd, void * p, size_t size);

Τυχαία προσπέλαση αρχείων <unistd.h>off_t lseek (int fd, off_t pos,int whence);

Σκληροί σύνδεσμοι <unistd.h>int link (const char * cur_name, const char * new_name);

int unlink (const char * cur_name);

7Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ

Διαχείριση αρχείων στο Unix (iii)

Στοιχεία αρχείων <unistd.h>

int stat (const char * name, struct stat * s);

int fstat (int fd, struct stat * s);

Στοιχεία που μπορούν να διαβαστούν Χρήστης και ομάδα Τύπος αρχείου και δικαιώματα πρόσβασης Φυσική θέση στο σύστημα αρχείων Μέγεθος αρχείου Αριθμός σκληρών συνδέσμων Χρόνος τελευταίας αλλαγής ή πρόσβασης

8Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ

Διαχείριση αρχείων στο Unix (iv)

Δικαιώματα πρόσβασης <unistd.h>

int access (const char * name, int flag);

int chmod (const char * name, mode_t flag);

int fchmod (int fd, mode_t flag);

Χρήστης και ομάδα <unistd.h>

int chown (const char * name, uid_t uid, gid_t gid);

int fchown (int fd, uid_t uid, gid_t gid);

9Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ

Διαχείριση αρχείων στο Unix (v)

Συμβολικοί σύνδεσμοι<unistd.h>

int symlink (const char * cur_name, const char * new_name);

int readlink (const char * cur_name, char * buf, int size);

Δημιουργία καταλόγων<unistd.h>

int mkdir (const char * name, mode_t mode);

10Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ

Διαχείριση αρχείων στο Unix (vi)

Διαχείριση καταλόγων<dirent.h>

DIR * opendir (const char * name);

int closedir (DIR * dir);

struct dirent * readdir (DIR * dir);

Παράδειγμα: υλοποίηση εντολής ls

DIR * dir = opendir ("/home/nickie");struct dirent * dp;

while ((dp = readdir (dir)) != NULL) printf("%s\n", dp->name);closedir(dir);

11Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ

Ροές δεδομένων στη C++ (i)

Οι λειτουργίες εισόδου / εξόδου στη C++ υλοποιούνται από κλάσεις της βιβλιοθήκης

Αρχείο επικεφαλίδων <iostream.h> Βασικοί τελεστές: >> και << Βασικές κλάσεις

Γενικές ροές εισόδου / εξόδουistream, ostream, iostream

Ροές αρχείων εισόδου / εξόδουifstream, ofstream, iofstream

Ροές εισόδου / εξόδου από συμβολοσειρέςistrstream, ostrstream, iostrstream

12Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ

Ροές δεδομένων στη C++ (ii)

Παράδειγμα#include <iostream.h>

int main (){ char login[10]; int code;

cout << "login: "; cin >> login; cout << "code: "; cin >> code; cout << "You gave " << login << "and " << code << endl; return 0;}

13Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ

Ροές εισόδου / εξόδου (i)

Προκαθορισμένες ροέςcout, cin, cerr, clog

Κλάση ostreamostream & operator << (ostream & s, T t);

ostream & put (char c);

ostream & write (const char * buf, int size);

ostream & flush ();

14Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ

Ροές εισόδου / εξόδου (ii)

Κλάση istreamistream & operator >> (ostream & s, T & t);

istream & get (char & c);

int get ();

istream & read (char * buf, int size);

istream & getline (char * buf, int size, char delim = '\n');

int peek ();

istream & putback (char c);