Upload
mo125
View
571
Download
6
Embed Size (px)
DESCRIPTION
cui thom
Citation preview
1
Data Structure & Algorithm
Xây dựng tập tin có cấu trúc(Structured files)
Nguyễn Tri TuấnKhoa CNTT – ĐH.KHTN.Tp.HCMEmail: nttuan@ fit.hcmuns.edu.vn
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 2
Structured files
Giới thiệu
Tập tin văn bản thô (plain text)
Tập tin nhị phân (binary)
Tập tin hình ảnh PCX
Tập tin CSDL DBF
2
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 3
Giới thiệuªCác thuật ngữ thường dùng:
File structure
File format
File header
Website tham khảo: http://www.wotsit.org/
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 4
Giới thiệu (tt)ªFile là một cách thức lưu trữ dữ liệu phổ biến
trên bộ nhớ phụ
ªDữ liệu lưu trữ trên file có cấu trúc thích hợp à hiệu suất truy xuất cao
3
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 5
Giới thiệu (tt)ªDữ liệu lưu trữ trên file thường theo 2 dạng phổ
biến:Dữ liệu text thô (plain text)Dữ liệu nhị phân (binary)
File dữ liệu plain text File dữ liệu nhị phân
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 6
Structured files
Giới thiệu
Tập tin văn bản thô (plain text)
Tập tin nhị phân (binary)
Tập tin hình ảnh PCX
Tập tin CSDL DBF
4
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 7
Plain textªPlain text phi cấu trúc:
Không phân hoạch theo ý nghĩa, chức năngRất khó xử lý
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 8
Plain text, có cấu trúc
[left]path=I:\DCIM\101MSDCF\ShowAllDetails=1show=1sortorder=3negative Sortorder=1[right]path=F:\Nguyen Tri Tuan\…
[SQL Server (32 bit)]Driver=H:\WINNT\System32\sqlsrv32.dllSetup=H:\WINNT\System32\sqlsrv32.dll32Bit=1
Tập tin định driver kết nối DB (ODBC.INI)
Tập tin định cấu hình WinCommander (WINCMD.INI)
5
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 9
Plain text, có cấu trúc (tt)ªĐịnh nghĩa:
Dữ liệu được chuyển thành dạng chuỗi (string) và lưu lên file theo một qui tắc nhất định
ªCác tính chất:Dễ truy xuất và xử lýDễ thay đổi nội dung khi cầnĐộ bảo mật kémTốc độ truy xuất chậmKích thước lớn
VD. Lưu số nguyên 12345 ở dạng binary (2 bytes) và dạng chuỗi (5 bytes)
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 10
Plain text, có cấu trúc (tt)ªCác dạng thường gặp:
File cấu hình phần mềm (*.INI, *.CFG)
File *.HTML, *.XML
6
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 11
Plain text, có cấu trúc (tt)// Minh họa đoạn code tạo file WINCMD.INI
FILE *f;char path[MAX_LEN];int showAllDetails, show;int sortOrder, negativeSortOrder;
f = fopen(“wincmd.ini”, “wt”);fprintf(f, “[left]\n”);fprintf(f, “path=%s\n”, path);fprintf(f, “ShowAllDetails=%i\n”, showAllDetails);fprintf(f, “show=%i\n”, show);fprintf(f, “sortorder=%i\n”, sortOrder);fprintf(f, “negative Sortorder=%i\n”,
negativeSortOrder);fclose(f);
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 12
Structured files
Giới thiệu
Tập tin văn bản thô (plain text)
Tập tin nhị phân (binary)
Tập tin hình ảnh PCX
Tập tin CSDL DBF
7
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 13
Tập tin nhị phânªĐịnh nghĩa:
Dữ liệu được lưu trên file giống như cách mà nó thường được lưu trong bộ nhớ chínhDữ liệu thường lưu dạng record
typedef struct {unsigned int ID;char name[30];float avgPoint;
} STUDENT;
// strucsize (in memory) // = 38 bytes avgPoint
name
ID
4 bytes
30 bytes
4 bytes
Memory block of STUDENT
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 14
Tập tin nhị phân (tt)// Minh họa đoạn code đọc dữ liệu file STUDENTS.DAT
FILE *f;STUDENT oneStudent;
// open file to readf = fopen(“students.dat”, “rb”);while (fread(&oneStudent, sizeof(STUDENT), 1, f)) {
// xử lý record oneStudent…
}fclose(f);
8
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 15
Tập tin nhị phân (tt)
#define MAX_LEN 128
typedef struct {char path[MAX_LEN];int showAllDetails;int show;int sortOrder;int negativeSortOrder;
} WINCMD_CFG;
// strucsize (in memory) // = 144 bytes
4 bytesnegativeSortOrder
4 bytessortOrder
show
showAllDetails
path
4 bytes
4 bytes
128 bytes
Memory block of WINCMD_CFG
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 16
Tập tin nhị phân (tt)// Minh họa đoạn code tạo file WINCMD.CFG
FILE *f;WINCMD_CFG leftPanelCfg, rightPanelCfg;
// tạo filef = fopen(“wincmd.cfg”, “wb”);// tạo 1st recordfwrite(&leftPanelCfg, sizeof(WINCMD_CFG), 1, f);// tạo 2nd recordfwrite(&rightPanelCfg, sizeof(WINCMD_CFG), 1, f);
fclose(f);
9
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 17
Tập tin nhị phân (tt)ªCác tính chất:
Dễ truy xuất và xử lýTốc độ truy xuất nhanhTính bảo mật cao hơn
ªChiếm phần lớn số file đang được dùng trên máy tính
Các file dữ liệu riêng, có cấu trúc tự tổ chức*.DOC, *.XLS, *.PDF, *.PPT*.JPG, *.PCX, *.BMP, *.TIF*.MP3, *.WAV, *.AVI, …
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 18
Tập tin nhị phân (tt)ªHai dạng file nhị phân thường dùng:
File có cấu trúc riêng, tự tổ chức
File có cấu trúc chuẩn
10
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 19
Tập tin nhị phân (tt)ªFile có cấu trúc riêng, tự tổ chức:
Thường được thiết kế chuyên biệt cho ứng dụngCấu trúc file được qui ước ngầm định trong ứng dụngCấu tạo không phức tạp
VD. File students.dat và file wincmd.cfg
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 20
Tập tin nhị phân (tt)ªFile có cấu trúc chuẩn:
Được công nhận rộng rãiCấu tạo thường phức tạpThường được tổ chức dạng file có header
VD. *.DOC, *.XLS, *.DBF, *.PCX,…
11
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 21
Tập tin nhị phân (tt)ªFile có cấu trúc chuẩn: (tt)
Header: là phần dữ liệu (thường lưu ở đầu file) đểcung cấp thông tin về cấu trúc chi tiết của file đó
Dữ liệu điểm ảnh
Header:kích thước ảnh (W, H); số màu; bảng màu; độphân giải;…
Dữ liệu các record
Header:Số field; tên các field; kiểu dữ liệu các field; sốrecord; ngày cập nhật;…
File CSDL (table)File ảnh (bitmap)
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 22
Tập tin nhị phân (tt)ªHeader: (tt) Có 2 dạng header phổ biến:
Header tĩnh:Kích thước của header không thay đổi trong mọi trường hợpDùng cho các file có cấu tạo không phức tạp;và các thành phần cấu tạo không thay đổi
VD. File ảnh bitmap PCX: header 128 bytes
Header động:Kích thước header thay đổi tùy fileDùng cho các file có thành phần cấu tạo biến thiên
VD. Bảng (table) có số field thay đổi từ 1 – 255 fieldsẢnh bitmap có bảng màu thay đổi từ 2 màu – 16 triệu màu
12
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 23
Structured files
Giới thiệu
Tập tin văn bản thô (plain text)
Tập tin nhị phân (binary)
Tập tin hình ảnh PCX
Tập tin CSDL DBF
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 24
Tập tin hình ảnh *.PCXªLịch sử hình thành, công dụng
ªẢnh bitmap
ªCấu trúc header
ªLưu trữ dữ liệu điểm ảnh
13
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 25
Tập tin hình ảnh *.PCX (tt)ª Lịch sử hình thành, công dụng:
Được xây dựng ~1985, bởi công ty ZSoft CorporationLà một trong các chuẩn tập tin dùng để lưu ảnh bitmap đầu tiên; được dùng trong phần mềm PC PaintBrushCho phép lưu các ảnh bitmap đơn; dạng 2 màu, 16 màu, 256 màu, 16 triệu màuĐược hỗ trợ trong nhiều phần mềm xử lý ảnhLà dạng file nhị phân có cấu trúc header tĩnh
3.0 (dùng cho PC Paintbrush, Publisher’s Paintbrush). Thể hiện được ảnh 24 bits màu
Dùng cho PC Paintbrush Windows2.8 không có bảng màu2.8 có bảng màu (palette)2.5 (dùng cho PC Paintbrush – DOS)VersionMã
54320
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 26
Tập tin hình ảnh *.PCX (tt)ªẢnh bitmap:
Là một ma trận các điểm ảnh (pixel)Kích thước W cột, H dòng (W*H pixels)Có một số lượng hữu hạn màu để thể hiện các pixel
Loại ảnh trắng đen (2 màu)Loại ảnh 16 màuLoại ảnh 256 màuLoại ảnh 16 triệu màu
Các màu được lưu thànhbảng màu (Palette)
14
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 27
Tập tin hình ảnh *.PCX (tt)ªẢnh bitmap: (tt)
Mỗi màu được tạo thành từ 3 thành phần cơ bản (Red, Green, Blue), mỗi thành phần biểu diễn bằng 1 byte à cần 3 bytes/màuMỗi pixel được biểu diễn bằng 1 số lượng bit tùy theo số lượng màu
2 màu à 1 bit/pixel16 màu à 4 bits/pixel256 màu à 8 bits/pixel16 triệu màu à 24 bits/pixel
Các thông số khác: Độ phân giải (DPI)Hình thức nén dữ liệu
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 28
Tập tin hình ảnh *.PCX (tt)ªCấu trúc header:
Dữ liệu điểm ảnh
Header:kích thước ảnh (W, H); số màu; bảng màu; độphân giải;…(Header size = 128 bytes)
Header mở rộng (768 bytes) = bảng màu 256 màu
Dữ liệu điểm ảnh
Header:kích thước ảnh (W, H); số màu; bảng màu; độphân giải;…(Header size = 128 bytes)
File *.PCX: 2, 16 màu hay 16 triệu màu
File *.PCX: 256 màu
15
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 29
Tập tin hình ảnh *.PCX (tt)ª Cấu trúc header: (tt)
Offset Chiều dài Thành phần Ý nghĩa0 1 Manufacturer Hằng số để nhận dạng loại file PCX (= 10: ZSoft .PCX) 1 1 Version Version2 1 Encoding Cờ cho biết hình thức mã hóa dữ liệu pixel
(1: nén PCX RLE; 0: không nén)3 1 BitsPerPixel Số bit dữ liệu dùng cho 1 pixel (trên 1 scan line).
Giá trị 1, 4, 84 2 Xmin Tọa độ X của góc trên trái6 2 Ymin Tọa độ Y của góc trên trái8 2 Xmax Tọa độ X của góc dưới phải10 2 Ymax Tọa độ Y của góc dưới phải
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 30
Tập tin hình ảnh *.PCX (tt)
ª Cấu trúc header: (tt)
Offset Chiều dài Thành phần Ý nghĩa12 2 HDPI Độ phân giải ngang (DPI)14 2 VDPI Độ phân giải dọc (DPI)16 48 ColorPalette Bảng màu của ảnh 2/16 màu (2/16 entries)64 1 Reserved Dành riêng (= 0)65 1 ColorPlane Giá trị Color Plane66 2 BytesPerLine Số byte thực sự được lưu cho 1 scan line.
Luôn làm tròn word68 2 PaletteInfo Thông tin về Palette (1: Color/B&W; 2: Grayscale)70 58 Filter Không dùng (= 0)
16
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 31
Tập tin hình ảnh *.PCX (tt)ª Cấu trúc header: (tt)
W = Xmax – Xmin + 1 (cột)H = Ymax – Ymin + 1 (dòng)Số màu:
31141
Color Plane
24 bits màu (16 tr màu)256 màu16 màu16 màuB/WSố màuBitPerPixel
88411
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 32
Tập tin hình ảnh *.PCX (tt)// Cấu trúc mô tả 1 thành phần màu (RGB)
typedef struct RGB_ENTRY {unsigned char R;unsigned char G;unsigned char B;
};
17
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 33
Tập tin hình ảnh *.PCX (tt)// Cấu trúc dữ liệu để lưu PCX Header// giả sử đang dùng HĐH 16 bitstypedef struct PCX_HEADER {
unsigned char manufacturer;unsigned char version;unsigned char encoding;unsigned char bitsPerPixel;unsigned int xMin, yMin, xMax, yMax;unsigned int hDPI;unsigned int vDPI;RGB_ENTRY colorPalette[16];unsigned char reserved;unsigned char colorPlane;unsigned int bytesPerLine;unsigned int paletteInfo;char filter[58];
};
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 34
Tập tin hình ảnh *.PCX (tt)// Chương trinh minh họa đọc *.PCX headerFILE *f;PCX_HEADER pcxHeader;RGB_ENTRY _256ExtendColorPalette[256];
f = fopen(“xyz.pcx”, “rb”);
fread(&pcxHeader, sizeof(PCX_HEADER), 1, f);
// Nếu file 256 màu à đọc palette mở rộng ở cuối fileif (pcxHeader.bitsPerPixel==8 && pcxHeader.colorPlane==1){
int n = 256*sizeof(RGB_ENTRY);
fseek(f, -n, SEEK_END);fread(_256ExtendColorPalette, sizeof(RGB_ENTRY), 256, f);
}
18
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 35
Tập tin hình ảnh *.PCX (tt)ªLưu trữ dữ liệu điểm ảnh:
1010 00
Pixel trên ảnh
Ảnh B/W (1 bit/pixel) – Không cần sử dụng PaletteBlack à bit = 0White à bit = 1
8 pixels à 1 byte dữ liệu
Dữ liệu được lưu trữ
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 36
Tập tin hình ảnh *.PCX (tt)ªLưu trữ dữ liệu điểm ảnh: (tt)
1100 0 0 10
.
.
.
012
9
15
Pixel trên ảnh
Dữ liệu được lưu trữ
Ảnh 16 màu (4 bits/pixel) – Palette có 16 phần tử2 pixels à 1 byte dữ liệu
19
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 37
Tập tin hình ảnh *.PCX (tt)ªLưu trữ dữ liệu điểm ảnh: (tt)
1010 0 0 10
.
.
.
012
41
255
Pixel trên ảnh
Dữ liệu được lưu trữ
Ảnh 256 màu (8 bits/pixel) – Palette có 256 phần tử1 pixel à 1 byte dữ liệu
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 38
Tập tin hình ảnh *.PCX (tt)ªLưu trữ dữ liệu điểm ảnh: (tt)
1 0110 000 111 001 0 01010 0 0 10
R G B
Pixel trên ảnh
Dữ liệu được lưu trữ
Ảnh 16 triệu màu (24 bits/pixel) – Không cần dùng Palette1 pixel à 3 bytes dữ liệu
20
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 39
Thank you Thank you for your attentionfor your attention
Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 40
Q & AQ & A