1. Trang chủ
  2. » Giáo Dục - Đào Tạo

MÔN học cơ sở lập TRÌNH đề tài FILES

31 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề File Text Và File Nhị Phân Trong Lập Trình C#
Trường học Trường Đại Học Kinh Tế TP Hồ Chí Minh
Chuyên ngành Cơ sở Lập Trình
Thể loại Bài tiểu luận
Năm xuất bản 2021
Thành phố TP Hồ Chí Minh
Định dạng
Số trang 31
Dung lượng 679,31 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

T GIỚI THIỆUệp tin file là tập hợp các loại thông tin dữ liệu do người dùng tạo ra từ máy tính nhằm giúp người dùng có thể lưu trữ dữ liệu một cách đơn giản và dễ dàng.. Ghi/ đọc file te

Trang 1

ĐỀ TÀI: FILES

BÀI TIỂU LUẬN

KHOA CÔNG NGHỆ THÔNG TIN KINH DOANH

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI

HỌC KINH TẾ TPHCM

MÔN HỌC: CƠ SỞ LẬP TRÌNH

Trang 2

MỤC LỤC

GIỚI THIỆU 3

I FILE TEXT …….……… 3

1 Khái quát chung về file text……… 3

2 Ghi/ đọc file text……… 3

2.1 Ghi dữ liệu vào file. ……… 3

2.2 Đọc dữ liệu từ file…

……… 4

3 Các vấn đề liên quan 4

4 Một số ví dụ 5

II FILE NHỊ PHÂN

……… 8

1 Khái quát chung về file nhị phân

……… 8

2 Ghi/ đọc file nhị phân

……… 9

2.1 Ghi dữ liệu vào file 9

2.2 Đọc dữ liệu từ file 9

3 Các vấn đề liên quan 11

4 Một số ví dụ 12

TÀI LIỆU KHAM KHẢO 30

Trang 3

T GIỚI THIỆU

ệp tin (file) là tập hợp các loại thông tin dữ liệu do người dùng tạo ra từ máy tính nhằm giúp người dùng có thể lưu trữ dữ liệu một cách đơn giản và dễ dàng Định dạng của file rất phong phú và đa dạng như: lưu trữ văn bản (txt, doc, ), hiển thị hình ảnh (jpeg, png, ), Tuy nhiên ở đây ta chỉ tìm hiểu file text và file nhị phân cũng như cách đọc và ghi chúng trong C# File là một class tiện ích, cung cấp các phương thức tĩnh cho việc tạo, copy, xóa, di chuyển và mở một file, và hỗ trợ tạo đối tượng FileStream.

I FILE TEXT

1 Khái quát chung về file text

File text là tài liệu văn bản tiêu chuẩn có chứa văn bản ở dạng plain text Hay nói cách khác file text là các tài liệu văn bản đơn giản nhưng chứa ít hoặc không có định dạng File text là những file thường có đuôi txt.

Trong ngôn ngữ lập trình C#, có 2 thao tác chính có thể thực hiện với file:

 Ghi dữ liệu vào file

 Đọc dữ liệu từ file

2 Ghi/ đọc file text

Không gian System.IO cung cấp : các lớp cơ bản cho phép người lập trình có thể lấy được thông tin cơ bản về file và thư mục (directory), các lớp hỗ trợ việc đọc và ghi các file và các luồng dữ liệu (stream).

Vì vậy để viết chương trình lưu dữ liệu vào file, ta phải thêm dòng tiêu đề:

using System.IO;

Ngoài ra ta còn sử dụng thêm lệnh using System.Text;

2.1 Ghi dữ liệu vào file

Trang 4

a Ghi bằng cú pháp

Trước tiên, ta cần tạo một tệp trong ổ đĩa bất kỳ Sau đó nhập các cú pháp sau:

string filename = "<ổ đĩa>\\<tên tệp>\\<tên _file_text>.txt";

StreamWriter sw = new StreamWriter(filename);

sw.Write("Xin chao"); //viết vào sw

sw.Close(); //đóng sw

b Tạo file text bằng hàm CreatText()

static string file1 = "<ổ đĩa>\\<tên tệp>\\<tên _file_text>.txt";

StreamWriter sw; //khai bái biến file cần ghi

sw = File.CreateText(file1); //tạo file text

sw.WriteLine("Xin chao");

sw.Close();

2.2 Đọc dữ liệu từ file

a Cách 1:

string filename = "<ổ đĩa>\\<tên tệp>\\<tên _file_text>.txt";

StreamReader sr = new StreamReader(filename);

input = sr.ReadToEnd(); //đọc toàn bộ file từ đầu đến cuối

Console.WriteLine(input); //hiển thị dữ liệu sau khi đọc

 Lưu ý:

o Sau khi ghi/đọc xong thì cần phải đóng file lại

o Chỉ thị static làm cho một thành phần không thể khởi tạo được, điều đó nghĩa là thành phần tĩnh không thể được khỏi tạo => Nếu chỉ thị static được áp dụng cho 1 lớp thì lớp

đó không thể khởi tạo thể hiện bằng từ khóa new

Trang 5

3 Các vấn đề liên quan

BinaryReader

file nhị phân

Đọc dữ liệu gốc (primitive data) từ một binary stream

private const string FILE_NAME = "Test.txt";

static void Main(string[] args)

Trang 6

b Ghi các dữ liệu sau đây vào file, đọc và hiển thị chúng:

This is a text

Chao ban

Ma so cua ban la: M520.1314

So thu tu cua ban la: 88

Trang 7

c Nhập số điện thoại và phần thưởng Ghi các dữ liệu sau đây vào file, đọc và hiển thị chúng:

This is a text

Chuc mung sdt da trung thuong

vui long lien lac voi chung toi qua so dien thoai 1900.xxx de biet them chi tiet

Thong bao den day la het Cam on quy khach da theo doi.

static string file1 = "C:\\cs1\\testfile.txt";

static void Main(string[] args)

sw.WriteLine("Chuc mung sdt {0} da trung thuong {1}", sdt, thuong);

sw.WriteLine("Vui long lien lac voi chung toi qua so dien thoai 1900.xxx de biet them chi tiet");

Trang 8

d Ghi các dữ liệu sau đây vào file, đọc và hiển thị:

This is a text

Xin chao

Toi la robot thong minh

Ma hieu cua toi la: M5201314

Toi van dang cai tien vui long cho them

static char mahieu = 'M';

static string modau = "xin chao";

static void Main(string[] args)

sw.WriteLine("Toi la robot thong minh");

sw.WriteLine("Ma hieu cua toi la: " + mahieu + a);

Trang 9

Kết quả:

II FILE NHỊ PHÂN

1 Khái quát chung về file nhị phân

File nhị phân (Binary file) có thể bao gồm dữ liệu nhị phân được lưu trữ bởi máy tính hoặc dữ liệu không nhị phân chuyển đổi hoặc mã hóa thành dữ liệu nhị phân; thường vẫn

tự nhiên và thường trú trong máy tính, nhưng nó có thể được chuyển đổi/ mã hóa để văn bản đơn giản nếu nó cần phải được truyền qua một kết nối mạng/ Internet Tuy nhiên, các phương pháp giải mã tệp nhị phân khác nhau là khác nhau.

Việc đọc/ ghi dữ liệu của file nhị phân có nhiều ưu điểm hơn file text vì bảo mật file cao hơn, tiết kiệm không gian hơn khi lưu trữ (số nhất là số thực), lưu vào tệp nhanh hơn (khi lượng dữ liệu lớn sẽ thể hiện rõ sự chênh lệch tốc độ giữa hai loại) và dữ liệu sẽ chính xác hơn.

2 Ghi/ đọc dữ liệu vào file

2.1 Ghi dữ liệu vào file

a Ghi dữ liệu vào file kiểu byte

byte [] b1 = {1, 2, 3, 4, 255}; // khai báo một biến mảng kiểu byte

FileStream("C:\\testbin.dat", FileMode.OpenOrCreate, FileAccess.Write, FileShare.None); \\ khai báo đối tượng để ghi vào file "testbin.dat" ở ổ đĩa C

foreach (byte bnet in b1) //thực hiện quá trình ghi các phần tử của mảng số b1 có kiểu byte

{

sw.WriteByte(bnext);

}

sw.Close(); //đóng file

b Ghi dữ liệu từ file nhị phân

string file1 = "C:\\FileBin1.dat";

FileStream file1;

string name; //dữ liệu thành viên

Trang 10

double salary; //dữ liệu thành viên

BinaryWriter wf = new BinaryWriter(file1); //khai báo đối tượng wf cho việc ghi vào file nhị phân

wf.Write(name); //ghi ra thành viên name

wf.Write(salary); //ghi ra thành viên salary

2.2 Đọc dữ liệu từ file

a Đọc dữ liệu từ file kiểu byte

FileInfo fr = new FileInfo("C:\\testbin.dat");

Stream strm = fr.OpenRead(); //mở file

b Đọc dữ liệu từ file nhị phân

FileStream file1; //khai báo file cần đọc

BinaryReader rf = new BinaryReader(file1); //khai báo đối tượng rf cho việc đọc

name = rf.ReadString(); //đọc thành phần name

salary = rf.ReadDouble();

 Lưu ý:

o Sau khi ghi/ đọc xong phải đóng file lại

o Tùy thuộc vào kiểu khai báo từng dữ liệu mà ta có các hàm đọc dữ liệu khác nhau

int (-2,147,483,648 to

Trang 11

uint (0 to 4,294,967,295) uint ui1; ui1 = rf.ReadUInt32();

long (-9,223,372,036,854,775,808

to 9,223,372,036,854,775,807) long b; b = rf.ReadInt64();

ulong (0 to

18,446,744,073,709,551,615) ulong ul1; ul1 = rf.ReadUInt64();

FileMode kiểu liệt kê (FileMode Enum) xác định các phương thức mở File khác

nhau Các thành viên của (FileMode Enum) là:

 Append: mở một File đang tồn tại và đặt con trỏ tại phần cuối của

File Tạo File nếu File đó chưa tồn tại.

 Create: tạo một File mới Nếu File đó đã tồn tại thì xóa File cũ và tạo

lại File mới.

 CreateNew: chỉ định hệ điều hành tạo một File mới Nếu File đó đã

tồn tại, nó sẽ ném ra một ngoại lệ (Throw IOException).

 Open: Nó mở một File đang tồn tại Nếu File không tồn tại, nó sẽ

ném ra một ngoại lệ (Throw FileNotFoundException).

 OpenOrCreate: chỉ định hệ điều hành mở một File nếu nó tồn tại.

Nếu File không tồn tại thì tạo một File mới.

 Truncate: mở một File đang tồn tại và truncate (cắt) kích cỡ của nó

về 0 byte.

FileAccess FileAccess Enum có các thành viên là:

 Read: đọc file

Trang 12

 ReadWrite: đọc và ghi vào file

 Write: ghi vào file

FileShare FileShare Enum có các thành viên sau:

 Inheritable: cho phép một File truyền tính kế thừa tới các tiến trình

con (Win32 không hỗ trợ trực tiếp tính năng này)

 None: từ chối việc chia sẻ File hiện tại

 Read: cho phép mở File để đọc

 ReadWrite: cho phép mở File để đọc và ghi

 Write: cho phép mở File để ghi

 Delete: cho phép xóa File

private const string FILE_NAME = "Test.txt";

static void Main(string[] args)

FileStream fs = new FileStream(FILE_NAME, FileMode.Open, FileAccess.Read);

BinaryReader r = new BinaryReader(fs);

Trang 14

private string name;

private int age;

private double salary;

Trang 15

Console.WriteLine(" MENU ");

Console.WriteLine("==============");

Console.WriteLine("1 Nhap du lieu");

Console.WriteLine("2 Doc va xem");

Filebin p = new Filebin();

string filename = "C:\\cs1\\Data.dat";

Console.WriteLine("Save data to file");

FileStream fwr = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.Write);

Console.WriteLine("Read data from file");

FileStream fr = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);

Trang 16

e Viết chương trình để lưu vào dữ liệu file

using System;

using System.IO;

class Filebin

{

private string name;

private int age;

private double salary;

Trang 17

Filebin[] p = new Filebin[n];

string filename = "C:\\cs1\\Data.dat";

Console.WriteLine("Ghi du lieu vao file");

FileStream fwr = new FileStream(filename, FileMode.Create, FileAccess.Write,

Console.WriteLine("Doc du lieu tu file");

Filebin[] p1 = new Filebin[n];

FileStream fr = new FileStream(filename, FileMode.Open, FileAccess.Read,

Trang 18

private long ID;

private int age;

public static int n;

public person[] p = new person[100];

public void Input()

Trang 19

Console.Write("You want to delete by ID or name (I/N): ");

string select = Console.ReadLine();

if (select.ToUpper() == "I")

{

Console.Write("Enter ID to delete: ");

long id1 = Int64.Parse(Console.ReadLine());

for (int i = 0; i < n; i++)

Console.Write("Enter name to delete: ");

string name2 = Console.ReadLine();

for (int i = 0; i < n; i++)

Console.Write("You want to edit by ID or name (I/N): ");

string select = Console.ReadLine();

if (select.ToUpper() == "N")

{

Console.Write("Enter name to edit: ");

string name1 = Console.ReadLine();

for (int i = 0; i < n; i++)

Trang 20

}

else if (select.ToUpper() == "I")

{

Console.Write("Enter ID to edit: ");

long id2 = Int64.Parse(Console.ReadLine());

for (int i = 0; i < n; i++)

Console.WriteLine("1 Input Data ");

Console.WriteLine("2 List All ");

Trang 21

Kết quả:

21

Downloaded by Heo Út (quangutbin@gmail.com)

Trang 22

g Viết chương trình để lưu dữ liệu vào file

Trang 23

namespace cslt

{

class Phone

{

private ulong _phoneNumber;

private string _fullName;

private string _address;

private int _noOfLine;

private string _type;

private string _organization;

public Phone(ulong _phoneNumber, string _fullName, string _address, int _noOfLine, string _type, string _organization)

get { return _phoneNumber; }

set { _phoneNumber = value; }

}

public string FullName

{

get { return _fullName; }

set { _fullName = value; }

}

public string Address

{

get { return this._address; }

set { _address = value; }

}

public int noOfLine

{

get { return _noOfLine; }

set { _noOfLine = value; }

}

public string Type

{

get { return _type; }

set { _type = value; }

}

public string Organization

{

get { return _organization; }

set { _organization = value; }

Trang 24

return (String.Format("Phone: {0} \nName: {1} \nAddress: {2} \nLine: {3} \nType: {4}

\nOrg: {5} \n", _phoneNumber, _fullName, _address, _noOfLine, _type, _organization));

ArrayList data = new ArrayList();

public Phone this[int i]

Trang 25

Console.WriteLine("Found phone(s): {0}", found);

for (int k = 0; k < found; ++k)

Trang 26

get { return data.Count; }

}

}

class App

{

static int index = -1;

static PhoneBook list = new PhoneBook();

public static int Main()

Trang 27

Console.WriteLine("1 Add a Phone");

Console.WriteLine("2 Edit a Phone");

Console.WriteLine("3 Delete a Phone");

Console.WriteLine("4 Search a Phone");

Console.WriteLine("5 Display PhoneBook");

Console.WriteLine("6 Save to file");

Console.WriteLine("7 Load from file");

Console.WriteLine("8 Display Emergency Numbers"); Console.WriteLine("9 Exit");

Console.WriteLine("\nEnter Phone info: ");

Phone phone = new Phone();

Console.Write("Enter Phone Number: ");

ulong tel = UInt64.Parse(Console.ReadLine()); list.Search(tel);

Trang 28

static void Edit()

Console.Write("\nEnter file name: ");

string fileName = Console.ReadLine();

if (File.Exists(fileName))

File.Delete(fileName);

FileStream fs = new FileStream(fileName, FileMode.Append, FileAccess.Write, FileShare.Write);

BinaryWriter bw = new BinaryWriter(fs);

for (int i = 0; i < list.Count; ++i)

Console.Write("\nEnter file name: ");

string fileName = Console.ReadLine();

Trang 29

Downloaded by Heo Út (quangutbin@gmail.com)

Trang 30

TÀI LIỆU KHAM KHẢO

 Sách Lập trình C# từ cơ bản đến nâng cao – Phạm Công Ngô

https://docs.microsoft.com/vi-vn/dotnet/api/system.io.filemode?view=netframework-https://docs.microsoft.com/en-us/dotnet/api/system.io.fileaccess?view=net-6.0

https://nguyenvanhieu.vn/doc-ghi-file-trong-c-sharp/

30

Trang 31

Downloaded by Heo Út (quangutbin@gmail.com)

Ngày đăng: 12/12/2022, 08:40

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w