PDA

View Full Version : File và C#



nmd
12-11-2002, 18:26
Giả sử:
StreamReader sr=new StreamReader(fileName);
StreamReader temp=new StreamReader(fileName);
Nếu ta làm gì đo với sr(ví dụ: sr.ReadLine() hoặc sr.Peek()) thì temp có bi ảnh hưởng theo không?(Chẳng hạn con trỏ điều khiển có di chuyển)

Thanh Ha
13-11-2002, 08:57
mình đang rất cần bài viết về C++ mong các bạn giúp đỡ vì mình không rành lắm. Xây dựng lớp phân số gồm cộng trừ nhân chia. Bai 2 là xây dựng lớp nhân viên

quangvu
13-11-2002, 09:42
Không bị ảnh hưỡng vì trên 2 Stream khác nhau mà ?
Bạn có thể kiểm chứng lại ,đây là cách không ngoan nhất .

nmd
13-11-2002, 15:13
Mình muốn hỏi thêm vấn đề này nữa:
do
{
StreamReader f=new StreamReader(fileName1);
StreamerWriter g=new StreamerWriter(fileName2);
StreamerWriter h=new StreamerWriter(fileName3);

HamA(f,g,h);
f.Close();
g.Close();
h.Close();

StreamerWriter f1=new StreamerWriter(fileName1);
StreamReader g1=new StreamReader(fileName2);
StreamReader h1=new StreamReader(fileName3);

f1.Close();
g1.Close();
h1.Close();
}while(....);

Hàm trên chắc chắn sai rồi. Nhưng các bạn có cách nào sửa cho dúng không? Chưa kể vấn đề nữa la khi f.Close(),g.Close().... thì lại không thấy giải phóng tài nguyên (đáng lẽ f,f1, g, g1... phải null). Mình đã thử:

StreamReader f;
StreamerWriter g,h;
StreamerWriter f1;
StreamReader g1, h1;

do
{
f=new StreamReader(fileName1);
g=new StreamerWriter(fileName2);
h=new StreamerWriter(fileName3);

HamA(f,g,h);
f.Close();
g.Close();
h.Close();

f1=new StreamerWriter(fileName1);
g1=new StreamReader(fileName2);
h1=new StreamReader(fileName3);

f1.Close();
g1.Close();
h1.Close();
}while(....);

Nhưng xong 1 vòng lặp, trở lai thi đến g=new.... thi gặp lỗi vì file vẫn được điểu khiển bởi thằng khác.

danceswithwolves
13-11-2002, 19:33
các method Close() hay Dispose() được gọi để giải phóng tài nguyên "phi bộ nhớ" (tạm gọi thế đi). Vì vậy không có nghĩa là khi bạn gọi obj.Close() thì obj == null vì obj vẫn tồn tại trên heap. Bạn có thể xem tài liệu về Close/Dispose trong MSDN để hiểu thêm về ý nghĩa của nó.

còn về Stream thì... hehehe ráng lên chút nữa sẽ tự nhận được câu trả lời thôi mà.

danceswithwolves
13-11-2002, 19:44
các method Close() hay Dispose() được gọi để giải phóng tài nguyên "phi bộ nhớ" (tạm gọi thế đi). Vì vậy không có nghĩa là khi bạn gọi obj.Close() thì obj == null vì obj vẫn tồn tại trên heap. Bạn có thể xem tài liệu về Close/Dispose trong MSDN để hiểu thêm về ý nghĩa của nó.

còn về Stream thì... hehehe ráng lên chút nữa sẽ tự nhận được câu trả lời thôi mà.