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à:
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.
// Filsize.cs
namespace Programming_CSharp
{using System;
using System.IO;
public class
Tester
{public static void Main()
{
string[] CLA =
Environment.GetCommandLineArgs(); FileInfo
}
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(“******************************”)
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
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
nó.
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
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(
đượ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