2012-11-27 27 views

Trả lời

5

Tham số offset kể bắt đầu từ đâu ghi dữ liệu trong mảng của bạn, tham số array. Nó không chỉ ra một bù đắp trong dữ liệu tập tin.

Các bù đắp tham số cho phép bù đắp của byte trong mảng (chỉ số đệm) mà tại đó để bắt đầu đọc, và đếm tham số cho biết số byte lớn nhất để được đọc từ dòng này . Giá trị trả lại là số byte thực tế được đọc hoặc bằng 0 nếu kết thúc luồng. Nếu hoạt động đọc thành công, vị trí hiện tại của luồng được nâng cao bằng số byte đã đọc. Nếu một ngoại lệ xảy ra, vị trí hiện tại của luồng không thay đổi.

Nguồn: FileStream.Read

1

Tôi giả sử bạn đang đề cập đến this phương pháp được ghi đè từ lớp cơ sở Stream.

Giá trị bù trừ là vị trí trong đối số array để đặt byte không được bù trừ từ đầu số FileStream. Đối số array thuộc loại byte[] không thể có nhiều hơn int.MaxValue yếu tố.

6

Giá trị bù là chỉ mục vào mảng byte nơi dữ liệu được đặt. Bạn không thể cấp phát một mảng lớn hơn 2 GB, do đó không cần số lớn hơn cho bù trừ.

+0

Điều này được cho phép trong .NET 4.5 với cấu hình. http://msdn.microsoft.com/en-us/library/hh285054(v=vs.110).aspx – sisve

+0

thực tế rất thú vị. Cám ơn. –

+0

http://msdn.microsoft.com/en-us/library/hh285054(v=vs.110).aspx –

1

Ngoài việc trả lời mike z, tại sao byte [] không thể được lập chỉ mục nhiều hơn int.MaxValue - lớp Array thực hiện IList với phương thức object this[int index] { get; set; }, vì vậy chỉ mục có thể là số nguyên duy nhất.

1

FileStream.Length nhận được độ dài bằng byte của luồng và FileStream.Đọc đọc khối byte từ luồng. Vì vậy, về mặt logic, bạn sẽ có nhiều byte đơn hơn các khối byte đó. Tôi giả định rằng vì lý do này FileStream.Length yêu cầu loại dài.

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