Sao chép một tập tin

Một phần của tài liệu Tài Liệu Học Ngôn Ngữ Lập Trình C#_p9 potx (Trang 26 - 30)

L p File Ph ng th c Mô t

Sao chép một tập tin

Một lớp tập tin tồn tại bŒn trong lớp cơ sở gọi l File, lớp n y được định vị bŒn trong namespace System.OI. Lớp File chứa một số cÆc phương thức tĩnh được sử dụng để thao tÆc trŒn tập tin. Thật vậy, tất cả cÆc phương thức bŒn trong lớp Fileđiều l tĩnh. Bảng 12.2 liệt kŒ những phương thức ch nh của lớp File.

ữ ậ Create CreateText Delete Exists GetAttributes GetCreationTime GetLastAccessTime GetLastWriteTime Move Open OpenRead OpenText OpenWrite SetAttributes SetCreationTime SetLastAccessTime SetLastWriteTime Tạo ra một tập tin mới ở một vị tr xÆc định Tạo ra tập tin lưu giữ text X a tập tin ở vị tr xÆc định. Tập tin phải hiện hữu nếu kh ng sẽ phÆt sinh ra ngoại lệ.

Kiểm tra xem tập tin c thực sự hiện hữu ở vị tr n o đó.

Lấy th ng tin thuộc t nh của tập tin. Th ng tin n y bao gồm: tập tin c bị nØn hay kh ng, tŒn thư mục, c thuộc t nh ẩn, thuộc t nh chỉđọc, tập tin hệ thống... Trả về ng y giờ tập tin được tạo ra

Trả về ng y giờ tập tin được truy cập lần cuối Trả về ng y giờ tập tin được viết lần cuối

Cho phØp tập tin được di chuyển v o vị tr mới v đổi tŒn tập tin.

Mở một tập tin tại vị tr đưa ra. Bằng việc mở tập tin n y chœng ta c thể viết th ng tin hay đọc th ng tin từ n .

Mở một tập tin hiện hữu đểđọc Mở một tập tin đểđọc dạng text Mở một tập tin xÆc định để viết Thiết lập thuộc t nh cho tập tin Thiết lập ng y giờ tạo tập tin

Thiết lập lại ng y giờ m tập tin được truy cập lần cuối

Thiết lập ng y giờ m tập tin được cập nhật lần cuối.

Bảng 12.2 : Một số phương thức chính thao tác tập tin.

Chương tr nh 12.5 sau minh họa việc sao chØp một tập tin.

Ví dụ 12.5: Sao chép một tập tin.

--- // file : filecopy.cs: sao chép một tập tin

// sử dụng tham số dòng lệnh namespace Programming_CSharp {

using System; using System.IO; public class Tester {

public static void Main()

ữ ậ

{

string[] CLA = Environment.GetCommandLineArgs(); if ( CLA.Length < 3)

{

Console.WriteLine(“Format: {0} orig-file new-file”, CLA[0]); }

else {

string origfile = CLA[1]; string newfile = CLA[2]; Console.Write(“Copy...”); try { File.Copy(origfile, newfile); } catch (System.IO.FileNotFoundException) {

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

}

catch (System.IO.IOException) {

Console.WriteLine(“\n{0} already exist!”, newfile); return;

}

catch (Exception e) {

Console.WriteLine(“\nAn exception was thrown trying to copy file”); Console.WriteLine(); return; } Console.WriteLine(“...Done”); } } } } --- 348

ữ ậ

Chương tr nh thực hiện bằng cÆch sau khi biŒn dịch ra tập tin filecopy.exe ta gọi thực hiện tập tin n y với tham số d ng lệnh như sau:

filecopy.exe filecopy.cs filecopy.bak

Tập tin filecopy.cs đª hiện hữu v tập tin filecopy.bak th chưa hiện hữu cho đến khi lệnh n y thực thi. Sao khi thực thi xong chương tr nh tập tin filecopy.bak được tạo ra. Nếu chœng ta thực hiện chương tr nh lần thứ hai cũng với cÆc tham số như vậy, th chœng ta sẽ nhận được kết quả xuất như sau:

Copy...

filecopy.bak already exists!

Nếu chœng ta thực hiện chương tr nh m kh ng c bất cứ tham số n o, hay chỉ c một tham số, chœng ta sẽ nhận được kết quả như sau :

Format d:\working\filecopy\filecopy.exe orig-file new-file

Cuối cøng, điều tệ nhất xảy ra l chœng ta thực hiện sao chØp nhưng tập tin nguồn kh ng tồn tại:

Copy...

filecopy.cs does not exist!

Như chœng ta ta thấy tất cả cÆc kết quả c thể c của chương tr nh minh họa 12.5 trŒn. Chương tr nh thực hiện việc sao chØp một tập tin v n kiểm tra tất cả cÆc t nh huống c thể c v thực hiện việc xử l cÆc ngoại lệ. Điều n y cho thấy chương tr nh vừa đáp ứng được mặt logic của lập tr nh vừa đáp ứng được việc xử l cÆc ngoại lệ.

Như chœng ta biết trong lệnh sau:

string[] CLA = Environment.GetCommandLineArgs();

thực hiện việc lấy cÆc tham số d ng lệnh được cấp cho chương tr nh. Lớp Environment n y chœng ta đª t m hiểu v đª sử dụng trong phần trước.

Lệnh sau kiểm tra xem chương tr nh c nhận được t hởn giÆ trị tham số d ng lệnh hay kh ng.

if ( CLA.Length < 3) {

Console.WriteLine(“Format: {0} orig-file new-file”, CLA[0]); }

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:

ữ ậ

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.

Một phần của tài liệu Tài Liệu Học Ngôn Ngữ Lập Trình C#_p9 potx (Trang 26 - 30)

Tải bản đầy đủ (PDF)

(40 trang)