Khoa Khoa hc & Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 8 : Ghi/₫ọc dliu ca ng dng C# ra file
Slide 1
8.0 Dn nhp
8.1 Tng quát v ₫ời sng ca dliu ca ng dng VC#
8.2 Các cp ₫ộ ghi/₫ọc dliu phbiến
8.3 Ghi/₫ọc chui byte thô ra/t file
8.4 Ghi/₫ọc chui ký tra/t file
8.5 Ghi/₫ọc dliu có kiu ₫ịnh sn ra/tfile nh phân
8.6 Ghi/₫ọc dliu có kiu ₫ịnh sn ra/t file văn bn
8.7 Ghi/Đọc hthng ₫ối tượng ra/vào file
8.8 Thí dv ₫ọc/ghi hthng ₫ối tượng
8.9 Kết chương
Chương 8
Ghi/₫ọc dliu ca ng dng C# ra file
Khoa Khoa hc & Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 8 : Ghi/₫ọc dliu ca ng dng C# ra file
Slide 2
8.0 Dn nhp
Chương này gii thiu các ₫ối tượng phc v ghi/₫ọc dliu
ra/vào file cùng các tác v ghi/₫ọc dliu c in ra/vào file.
Chương này cũng gii thiu các ₫ối tượng phc v ghi/₫ọc h
thng ₫ối tượng ra/vào file cùng các tác v ghi/₫ọc hthng ₫ối
tượng có mi quan htham kho phc tp ra/vào file.
Khoa Khoa hc & Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 8 : Ghi/₫ọc dliu ca ng dng C# ra file
Slide 3
8.1 Tng quát v ₫ời sng ca dliu ng dng VC#
Nhu cu ghi/₫ọc ni dung ca các biến dliu thường rơi vào 3
tình hung chính yếu sau ây :
1. Lưu kết quca phiên làm vic hin hành ₫ể dùng li cho
phiên làm vic kếtiếp.
2. Nhp rt nhiu dliu cho phn mm.
3. Xut rt nhiu dliu cho người dùng.
Khoa Khoa hc & Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 8 : Ghi/₫ọc dliu ca ng dng C# ra file
Slide 4
8.2 Các cp ₫ộ ghi/₫ọc dliu phbiến
1. ghi/₫ọc chui byte thô ra/tfile, ngnghĩa ca các byte do chương
trình t qui ₫ịnh.
2. ghi/₫ọc chui ký ttheo cách mã hóa xác ₫ịnh (ASCII, UTF8,
UCS-2,...) ra/t file.
3. ghi/₫ọc các dliu thuc các kiu cơ bn ₫ịnh sn như bool, byte,
int, double, String,... ra/tfile theo dng nhphân, là dng mã hóa
gc bên trong chương trình.
4. gii mã các dliu thuc các kiu cơ bn ₫ịnh sn như bool, byte,
int, double, String,... thành chui văn bn, ghi chui ra file văn
bn ₫ể khi cn ₫ọc các chui văn bn tfile vào chương trình, mã
hóa tng chui trên file thành dliu nh phân bên trong chương
trình trước khi xlý tiếp.
5.ghi/₫ọc ₫ối tượng và các ₫ối tượng ₫ược tham kho trc tiếp hay
gián tiếp bi ₫ối tượng gc ra/tfile nhphân hay file XML.
Khoa Khoa hc & Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 8 : Ghi/₫ọc dliu ca ng dng C# ra file
Slide 5
8.3 Ghi/₫ọc chui byte thô ra/tfile
class sdng : FileStream
các tác v: WriteByte(), ReadByte()
Qui trình ghi in hình như sau :
//1. to ₫ối tượng qun lý file ₫ể ghi dliu
FileStream oFile = new FileStream("C:\\data.bin",
FileMode.Create);
//2. ghi tun ttng byte ra file
oFile.WriteByte(1byte);
...
//3. óng file li ₫ể phòng nga vic ghi bt hp pháp lên file
oFile.Close();
Khoa Khoa hc & Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 8 : Ghi/₫ọc dliu ca ng dng C# ra file
Slide 6
8.3 Ghi/₫ọc chui byte thô ra/tfile
Code thí dvic ghi chui byte :
Bitmap bmScreen; //₫ịnh nghĩa biến cha nh bitmap
Graphics gpScreen; //₫ịnh nghĩa biến cha các tác vxlý ni dung ₫ối tượng giao din
this.Hide(); //nếu cn, n Form hin hành ₫ể không xut hin trong bitmap chp
//to ₫ối tượng bitmap cùng kích thước màn hình
bmScreen = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb);
//to ₫ối tượng Graphics kết hp vi bmScreen
gpScreen = Graphics.FromImage(bmScreen);
//chp toàn màn hình và lưu vào bmScreen
gpScreen.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0,
Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
Khoa Khoa hc & Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 8 : Ghi/₫ọc dliu ca ng dng C# ra file
Slide 7
8.3 Ghi/₫ọc chui byte thô ra/tfile
Code thí dvic ghi chui byte :
//hin thli Form hin hành nếu cn
this.Show();
//chuyn bitmap thành dãy các byte liên tc
ImageConverter imgConverter = new ImageConverter();
byte[] xByte = (byte[])imgConverter.ConvertTo(bmScreen, typeof(byte[]));
//1. to file ₫ể lưu trdãy các byte ni dung ca bitmap
FileStream oFile = new FileStream("d:\\screen.bin", FileMode.Create);
//2. lp ghi tng byte ca dãy xByte ra file
for (int i = 0; i < xByte.Length; i++) oFile.WriteByte(xByte[i]);
//3. óng file li
oFile.Close();
Khoa Khoa hc & Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 8 : Ghi/₫ọc dliu ca ng dng C# ra file
Slide 8
8.3 Ghi/₫ọc chui byte thô ra/tfile
Qui trình ₫ọc chui byte in hình như sau :
//1. to ₫ối tượng qun lý file ₫ể ₫ọc dliu
FileStream inFile = new FileStream("C:\\data.bin",
FileMode.Open);
//2. ₫ọc tun ttng byte tfile
inFile.ReadByte(1byte);
...
//3. óng file li ₫ể phòng nga vic ₫ọc bt hp pháp lên file
inFile.Close();
Khoa Khoa hc & Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 8 : Ghi/₫ọc dliu ca ng dng C# ra file
Slide 9
8.3 Ghi/₫ọc chui byte thô ra/tfile
Code thí dvic ₫ọc chui byte :
//1. mfile cha dliu cn ₫ọc
FileStream inFile = new FileStream("d:\\screen.bin", FileMode.Open);
//to biến dãy các byte vi ₫ộ ln bng ₫ộ ln ca file
byte[] xData = new byte[inFile.Length];
//2. lp ₫ọc tng byte tfile vào dãy xData
for (int i = 0; i < inFile.Length; i++) xData[i] = (byte)inFile.ReadByte();
//3. óng file li
inFile.Close();
//to ₫ối tượng Stream
MemoryStream ms = new MemoryStream(xByte, 0, xByte.Length);
ms.Position = 0;
Khoa Khoa hc & Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 8 : Ghi/₫ọc dliu ca ng dng C# ra file
Slide 10
8.3 Ghi/₫ọc chui byte thô ra/tfile
Code thí dvic ₫ọc chui byte :
//copy dãy byte vào ₫ối tượng Stream
ms.Write(xData, 0, xData.Length);
//biến ₫ổi ₫ối tượng Stream thành ₫ối tượng Image
System.Drawing.Image image = System.Drawing.Image.FromStream(ms, true);
//hin th bitmap lên ₫ối tượng PictureBox ca Form ng dng
picImage.SizeMode = PictureBoxSizeMode.StretchImage;
picImage.Image = image;