1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Các lớp cơ sở phần 3 doc

12 356 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 đề Tài Liệu Các Lớp Cơ Sở Phần 3 Doc
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Công Nghệ Thông Tin
Thể loại Tài Liệu
Định dạng
Số trang 12
Dung lượng 191,82 KB

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

Nội dung

Nếu chúng ta nhập vào không đủ 3 tham số dòng lệnh, thì chương trình sẽ xuất ra thông báo với tên của chương trình thực hiện được đọc bởi GetCommandLineArgs.. Bởi vì có rất nhiều thứ có

Trang 1

Nếu giá trị này nhỏ hơn 3, người sử dụng đã không cung cấp đủ thông tin Nên nhớ rằng, sử dụng phương thức GetCommandLineArgs, thì giá trị đầu tiên mà chúng ta nhận được là tên của chương trình Phần còn lại là các tham số dòng lệnh được theo sau Điều này có nghĩa rằng chúng ta cần thiết 3 giá trị: tên chương trình, tên tập tin nguồn, tên tập tin mới Nếu chúng ta nhập vào không đủ 3 tham số dòng lệnh, thì chương trình sẽ xuất ra thông báo với tên của chương trình thực hiện được đọc bởi GetCommandLineArgs

Nếu cung cấp đầy đủ các tham số, việc xử lý sao chép sẽ được thực hiện Để dễ theo dõi thì chương trình xuất ra thông báo việc sao chép file:

Trang 2

Console.Write(“Copy ”);

Console.WriteLine(“ Done”

);

Mặc dùng việc sao chép tập tin không có gì phức tạp, nhưng chúng ta lưu ý rằng trong chương trình trên chúng ta có thêm vào các đoạn xử lý ngoại lệ Việc gọi hàm

Copy của File được bao bọc trong khối try, và sau đó là ba thể hiện của Catch theo sau

Bởi vì có rất nhiều thứ có thể gây ra lỗi do các hoạt động trên tập tin, đề nghị rằng chúng ta nên đảm bảo cho chương trình của chúng ta thực hiện việc bắt giữ và xử lý các ngoại lệ tương ứng

Hầu hết những phương thức File có những ngoại lệ đã được định nghĩa cho một số các lỗi quan trọng có thể xuất hiện Khi chúng ta tra cứu tài liệu trực tuyến cho một lớp Chúng ta sẽ tìm thấy bất cứ những ngoại lệ nào được định nghĩa cho phương thức đưa ra Một cách thực hành lập trình tốt là thêm vào các đoạn xử lý ngoại lệ với bất cứ ngoại lệ nào có thể xuất hiện Trong chương trình ngoại lệ đầu tiên được xử lý cho việc gọi hàm Copy() là:

catch (System.IO.FileNotFoundException)

{

Console.WriteLine(“\n{0} does not exist!”, origfile);

return;

}

Ngoại lệ này được phát sinh khi một tập tin mà chúng ta cố sao chép không tìm thấy, ngoại lệ này được đặt tên là FileNotFoundException

Ngoại lệ tiếp theo được bắt là IOException Ngoại lệ này được phát sinh từ một số ngoại lệ khác Bao gồm một thư mục không tìm thấy (DirectoryNotFoundException), kết thúc của tập tin không đựơc tìm thấy (EndOfStreamException), có lỗi đọc tập tin (FileLoadException), hay là lỗi tập tin không được tìm thấy, nhưng ngoại lệ này sẽ được bắt trong xử lý ngoại lệ bên trên Ngoại lệ này cũng được phát sinh khi tập tin mà chúng ta cần tạo mới đã tồn tại

Cuối cùng, chúng ta sẽ bắt giữ những ngoại lệ không mong đợi còn lại bằng sử dụng ngoại lệ chung hay ngoại lệ tổng quát Bởi vì chúng ta không biết nguyên nhân của việc xảy ra ngoại lệ, ở đây chỉ có thể hiển thị thông điệp của chính bản thân ngoại lệ phát sinh

Ghi chú: Nên sử dụng xử lý ngoại lệ khi thao tác trên tập tin Phong cách lập

trình tốt là không nên nghĩ rằng người sử dụng sẽ cung cấp cho chương trình mọi thứ mà chương trình cần nhất là khi sử dụng tham số dòng lệnh

Trang 3

Lấy thông tin về tập tin

Ngoài lớp File được cung cấp từ thư viện cơ sở, một lớp khác cũng thường xuyên được sử dụng thể làm việc với tập tin là lớp FileInfo Chương trình 12.6 minh họa việc sử dụng lớp này Trong chương trình này sẽ lấy một tên tập tin và hiển thị kích thước và những ngày quan trọng liên quan đến việc tạo, bổ sung tập tin

Ví dụ 12.6: Sử dụng lớp FileInfo

Trang 4

-

// Filsize.cs

namespace Programming_CSharp

{

using System;

using System.IO;

public class

Tester

{

public static void Main()

{

string[] CLA =

Environment.GetCommandLineArgs(); FileInfo

fiExe = new FileInfo( CLA[0] );

if ( CLA.Length < 2)

{

}

else

{

Console.WriteLine(“Format: {0} filename”, fiExe.Name);

try { FileInfo fiFile = new FileInfo( CLA[1]);

if (fiFile.Exists)

{

}

else

{

}

Console.WriteLine(“******************************”)

; Console.WriteLine(“{0} {1}”,fiFile.Name, fiFile.Length);

Console.WriteLine(“******************************”)

; Console.WriteLine(“Last access:

{0}”,fiFile.LastAccessTime); Console.WriteLine(“Last write: {0}”, fiFile.LastWriteTime);

Console.WriteLine(“Creation: {0}”, fiFile.CreationTime); Console.WriteLine(“******************************”)

;

Trang 5

Console.WriteLine(“{0} doesn’t exist!”, fiFile.Name); }

catch (System.IO.FileNotFoundException) {

Trang 6

Console.WriteLine(“\n{0} does not exists!”, CLA[1]);

return;

} catch (Exception e) {

Console.WriteLine(“\n An exception was thrown trying to copy

file”); Console.WriteLine();

return;

}// end catch }// end else

}// end Main

}// end class

}// end namespace

-

Kết quả:

******************************

filesize.cs 1360

******************************

Last access: 12/5/2002 12:00:00 AM

Last write: 12/5/2002 5:50:50 PM

Creation: 12/5/2002 5:53:31 PM

******************************

-

Một đối tượng FileInfo được tạo ra và gắn với một tập tin tương ứng:

FileInfo fiInfo = new FileInfo( CLA[1]);

Tham số của bộ khởi dựng lớp FileInfo xác định tên của tập tin mà nó sẽ chứa nhận thông tin, trong trường hợp này nó sẽ lấy tham số thứ hai của tham số dòng lệnh làm tập tin mà nó sẽ thực hiện Nếu người dùng không nhập tên tập tin thì chương trình

sẽ in ra tên của chương trình

Làm việc với tập tin dữ liệu

Phần trước chúng ta đã thực hiện công việc như lấy thông tin của tập tin và sao chép tập tin sang một tập tin mới Việc thực hiện quan trọng của tập tin là đọc

và viết những thông tin từ tập tin Trong phần này chúng ta sẽ tìm hiểu về luồng nhập xuất và cách tạo mới một tập tin để ghi hay mở một tập tin đã tồn tại để đọc

Trang 7

thông tin

Luồng nhập xuất

Thuật ngữ tập tin thì nói chung là liên quan đến những thông tin lưu trữ bên trong ỗ đĩa hoặc trong bộ nhớ Khi làm việc với tập tin, chúng ta bao hàm với việc sử dụng một luồng.Nhiều người nhầm lẫn về sự khác nhau giữa tập tin và luồng Một luồng đơn giản là luồng của thông tin, chứa thông tin sẽ được chuyển qua, còn tập tin thì để lưu trữ thông tin

Một luồng được sử dụng để gởi và nhận thông tin từ bộ nhớ, từ mạng, web, từ một chuỗi, Một luồng còn được sử dụng để đi vào và ra với một tập tin dữ liệu

Thứ tự của việc đọc một tập tin

Khi đọc hay viết một tập tin, cần thiết phải theo một trình tự xác định Đầu tiên là phải thực hiện công việc mở tập tin Nếu như tạo mới tập tin, thì việc mở tập tin cùng lúc với việc tạo ra tập tin đó Khi một tập tin đã mở, cần thiết phải tạo cho nó một luồng để đặt thông tin vào trong một tập tin hay là lấy thông tin ra từ tập tin Khi tạo một luồng, cần thiết phải chỉ ra thông tin trực tiếp sẽ được đi qua luồng Sau khi tạo một luồng gắn với một tập tin, thì lúc này chúng ta có thể thực hiện việc đọc ghi các dữ liệu trên tập tin Khi thực hiện việc đọc thông tin từ một tập tin, chúng ta cần thiết phải kiểm tra xem con trỏ tập tin đã chỉ tới cuối tập tin chưa, tức là chúng ta đã đọc đến cuối tập tin hay chưa Khi hoàn thành việc đọc ghi thông tin trên tập tin thì tập tin cần phải được đóng lại

Tóm lại các bước cơ bản để làm việc với một tậo tin là:

· Bước 1: Mở hay tạo mới tập tin

· Bước 2: Thiết lập một luồng ghi hay đọc từ tập tin

· Bước 3: Đọc hay ghi dữ liệu lên tập tin

· Bước 4: Đóng lập tin lại

Các phương thức cho việc tạo và mở tập tin

Có nhiều kiểu luồng khác nhau Chúng ta sẽ sử dụng những luồng khác nhau và những phương thức khác nhau phụ thuộc vào kiểu dữ liệu bên trong của tập tin Trong phần này, việc đọc/ghi sẽ được thực hiện trên tập tin văn bản Trong phần kế tiếp chúng ta học cách đọc và viết thông tin trên tập tin nhị phân Thông tin nhị phân bao hàm khả năng mạnh lưu trữ giá trị số và bất cứ kiểu dữ liệu nào khác

Để mở một tập tin trên đĩa cho việc đọc và viết tập tin văn bản, chúng ta cần phải sử dụng

cả hai lớp File và FileInfo Một vài phương thức có thể sử dụng trong những lớp này Các phương thức này bao gồm:

AppendText Mở một tập tin để và tập tin này có thể được thêm văn bản vào trong

Trang 8

Tạo luồng StreamWriter sử dụng để thêm vào trong văn bản Create Tạo mới một tập tin

CreateText Tạo và mở một tập tin văn bản Tạo ra một luồng StreamWriter Open Mở một tập tin để đọc/viết Mở một FileStream

OpenRead Mở một tập tin để đọc

OpenText Mở một tập tin văn bản để đọc Tạo ra StreamReader để sử dụng OpenWrite Mở một tập tin cho việc đọc và ghi

Trang 9

Làm thế nào để chúng ta có thể biết được khi nào sử dụng lớp File chính xác hơn là

sử dụng lớp FileInfo nếu chúng cùng chứa những phương thức tương tự với nhau Thật ra hai lớp này có nhiều sự khác biệt Lớp File chứa tất cả các phương thức tĩnh, thêm vào đó lớp File tự động kiểm tra permission trên một tập tin Trong khi đó nếu muốn dùng lớp FileInfo thì phải tạo thể hiện của lớp này Nếu muốn mở một tập tin chỉ một lần thì tốt nhất là sử dụng lớp File, còn nếu chúng ta tổ chức việc sử dụng tập tin nhiều lần bên trong chương trình, tốt nhất là ta dùng lớp FileInfo Hoặc nếu không chắc chắn cách sử dụng thì chúng ta có thể sử dụng lớp FileInfo

Viết vào một tập tin văn bản

Cách tốt nhất để nắm vững cách thức làm việc với tập tin là chúng ta sẽ bắt tay vào tìm hiểu chương trình Trong phần này chúng ta sẽ tìm hiểu một ví dụ minh họa việc tạo ra một

tập tin văn bản rồi sau đó viết lại thông tin vào nó

Ví dụ 12.7: Viết dữ liệu vào tập tin văn bản

-

//writing.cs:: viết vào một tập tin văn bản

namespace Programming_CSharp

{

using System;

using System.IO;

public class

Tester

{

public static void Main(String[] args)

{

if (args.Length < 1) {

Console.WriteLine(“Phai nhap ten tap tin.”);

} else { StreamWriter myFile = File.CreateText(

args[0]); myFile.WriteLine(“Khong co viec gi kho”); myFile.WriteLine(“Chi so long khong ben”); myFile.WriteLine(“Dao nui va lap bien”);

Trang 10

myFile.WriteLine(“Quyet chi at lam nen”); for(int i=0; i < 10; i++)

{

Trang 11

myFile.Write(“{0} ”,i);

} myFile.Close();

} }

}

}

-

Khi chạy chương trình trên chúng ta phải cung cấp tên của tập tin được tạo mới, nếu không cung cấp thì chương trình sẽ không thực hiện việc tạo tập tin Giả sử chúng

ta có cung cấp một tham số dòng lệnh cho chương trình thì một tập tin văn bản mới được tạo ra có nội dung như sau:

Khong co viec gi kho

Chi so long khong

ben Dao nui va lap

bien Quyet chi at lam

nen

0 1 2 3 4 5 6 7 8 9

Trong chương trình trên không thực hiện việc xử lý ngoại lệ Điều này dẫn đến chương trình

có thể phát sinh ra những ngoại lệ và những ngoại lệ này không được xử lý Đây là cách lập trình không tốt, nên yêu cầu người đọc nên thêm các xử lý ngoại lệ vào chương trình trên, ngoại lệ này cũng tương tự như ngoại lệ trong ví dụ trước

Như chúng ta thấy hàm Main có tham số và tham số này sẽ được nhận thông qua dòng lệnh, trong các ví dụ trước, chương trình nhận tham số dòng lệnh thông qua lớp

Environment, còn ở đây ta khai báo tham số dòng lệnh trực tiếp cho chương trình Dòng lệnh đầu tiên của hàm Main() là kiểm tra số tham số nhập vào, nếu không có tham số nào chương trình sẽ xuất ra thông báo là không có tên tập tin và kết thúc chương trình Trong trường hợp cung cấp tham số đầy đủ chương trình sẽ thực hiện việc tạo mới tập tin Phương thức CreateText của lớp File được gọi để tạo ra một đối tượng StreamWriter mới gọi là myFile Tham số được truyền cho hàm là tên của tập tin sẽ được tạo Kết quả cuối cùng của dòng lệnh này là tạo ra một tập tin văn bản mới Dữ liệu s4 được đưa vào tập tin thông qua StreamWriter với thể của nó là myFile

Ghi chú: Nếu một tập tin hiện hữu với cùng tên như tập tin mà chúng ta tạo ra thì

tập tin

cũ sẽ được viết chồng, tức là dữ liệu bên trong tập tin cũ sẽ bị xóa

mất Hình sau minh họa việc thực hiện tạo tập tin và đưa dữ liệu

vào

Trang 12

Data to

be written

Disk file

arg[0] myFile - StreamWriter

Hình 12.3 : Mô tả thực hiện tạo tập tin và đưa dữ liệu vào

Ngày đăng: 21/01/2014, 00:20

TỪ KHÓA LIÊN QUAN

w