Presentation is loading. Please wait.

Presentation is loading. Please wait.

Accessing Files in CCS-2303, C-Term 20101 Accessing Files in C CS-2303 System Programming Concepts (Slides include materials from The C Programming Language,

Similar presentations


Presentation on theme: "Accessing Files in CCS-2303, C-Term 20101 Accessing Files in C CS-2303 System Programming Concepts (Slides include materials from The C Programming Language,"— Presentation transcript:

1 Accessing Files in CCS-2303, C-Term 20101 Accessing Files in C CS-2303 System Programming Concepts (Slides include materials from The C Programming Language, 2 nd edition, by Kernighan and Ritchie and from C: How to Program, 5 th and 6 th editions, by Deitel and Deitel)

2 Accessing Files in CCS-2303, C-Term 20102 Two Kinds of File Access Stream File is treated as a sequence of bytes Access is sequential – i.e., in byte order Cannot replace data in the middle of a file Raw File is a sequence of blocks Any block can be read and/or written independent

3 Accessing Files in CCS-2303, C-Term 20103 Definition – File A (potentially) large amount of information or data that lives a (potentially) very long time Often much larger than the memory of the computer Often much longer than any computation Sometimes longer than life of machine itself (Usually) organized as a linear array of bytes or blocks Internal structure is imposed by application (Occasionally) blocks may be variable length (Often) requiring concurrent access by multiple threads or processes Even by processes on different machines!

4 Accessing Files in CCS-2303, C-Term 20104 Implementations of Files Usually on disks (or devices that mimic disks) Magnetic – hard drive or floppy Optical – CD, DVD Flash drives – electronic memory, organized as disks Requirement Preserve data contents during power-off or disasters Directory / Folder Special kind of file that contains links pointing to other files Associates names with files

5 Accessing Files in CCS-2303, C-Term 20105 Implementations of Files Usually on disks (or devices that mimic disks) Magnetic – hard drive or floppy Optical – CD, DVD Flash drives – electronic memory, organized as disks Requirement Preserve data contents during power-off or disasters Directory / Folder Special kind of file that contains links pointing to other files Associates names with files Older systems also used magnetic tape, paper tape, trays of punched cards, etc.

6 Accessing Files in CCS-2303, C-Term 20106 Organization of File Systems Contiguous Blocks stored contiguously on storage medium E.g., CD, DVD, some large database systems Access time to any block is O(1) Linked Blocks linked together – File Allocation Table (FAT) Access time is O(n) Indexed Blocks accessed via tree of index blocks (i-nodes) Access time is O(log n) However, base of logarithm may be very large (>100)

7 Accessing Files in CCS-2303, C-Term 20107 Organization of File Systems Contiguous Blocks stored contiguously on storage medium E.g., CD, DVD, some large database systems Access time to any block is O(1) Linked Blocks linked together – File Allocation Table (FAT) Access time is O(n) Indexed Blocks accessed via tree of index blocks (i-nodes) Access time is O(log n) However, base of logarithm may be very large (>100) NTFS and Linux file systems on hard drives

8 Accessing Files in CCS-2303, C-Term 20108 Organization of File Systems Contiguous Blocks stored contiguously on storage medium E.g., CD, DVD, some large database systems Access time to any block is O(1) Linked Blocks linked together – File Allocation Table (FAT) Access time is O(n) Indexed Blocks accessed via tree of index blocks (i-nodes) Access time is O(log n) However, base of logarithm may be very large (>100) Typical camera chips, flash drives, floppies

9 Accessing Files in CCS-2303, C-Term 20109 Stream File Access fgetc(), fgets(), fputs(), fputc(), fscanf(), fprintf(),... fopen(), fclose() Familar tools fread(), fwrite(), fseek(), ftell(), rewind(), fgetpos(), fsetpos() Not so familiar Note:– if you seek to a position in a file and start writing, file is truncated at that point All take FILE * argument to identify the file. Declared in

10 Accessing Files in CCS-2303, C-Term 201010 Raw File Access See Kernighan & Ritchie, Chapter 8 Raw file access Without simplifying stream functions – e.g., –scanf, fscanf, printf, fprintf, fgetc, etc. read and write raw disk blocks Seek to a file position –lseek, fseek — sets file pointer to specified location –Subsequent read, write, etc., start there –ftell – returns file pointer

11 Accessing Files in CCS-2303, C-Term 201011 Raw File Access (continued) #include int fd; int open(char *name, int flags, int perms); int creat(char *name, int perms); int read(fs, buf, n); int write(fs, buf, n); long lseek(fd, long offset, int origin);

12 Accessing Files in CCS-2303, C-Term 201012 Raw File Access (continued) Also functions for listing directories, adding things to directories, linking files, etc. All are essentially calls to the OS Consult man pages for details man 3p open man 3p read man 3p write... POSIX standard — Most likely to be portable across platforms

13 Accessing Files in CCS-2303, C-Term 201013 Streams Stream access is a layer of abstraction on top of raw access See K&R §8.1–8.6 for example implementations

14 Accessing Files in CCS-2303, C-Term 201014 Questions?


Download ppt "Accessing Files in CCS-2303, C-Term 20101 Accessing Files in C CS-2303 System Programming Concepts (Slides include materials from The C Programming Language,"

Similar presentations


Ads by Google