PDA

View Full Version : معادل While(!eof(filepointer)) در FileStream چيست؟



the Dead
پنج شنبه 02 خرداد 1387, 18:04 عصر
بنده خود Solution را نيز آپلود کردم ولی مشکل اصلی من توی اين قسمت که من الان يک فايل باينری ذخيره شده به صورت مجموعه ای از Struct ها دارم حالا ميخوام تمام اين ها را در يک آرايه ای از Struct ها تا زمانی که به انتها فايل نرسيدم بريزم چه کار بايد بکنم؟
مرسی

using (FileStream sRr = Masterfile.OpenRead())
{
while (!eof(sRr)) ////What shoud i write on this line(make me crazy)
{
sRr.Read(bytes, 0x0, bytes.Length);
Mmem[j] = YourBytesToStruct(bytes);
j++;

}

}

علیرضا مداح
پنج شنبه 02 خرداد 1387, 20:30 عصر
سلام دوست عزیز
یک روش اینست که از تابع File.ReadAllBytes استفاده نمایید که ورودی آن مسیر فایل میباشد ، سپس محتویات فایل را درون یک آرایه از بایت ریخته و آن را برمیگرداند و بعد از اتمام عملیات فایل را میبندد ،

و یا از متدهای FileStream.ReadByte و FileStream.Seek استفاده نمایید :
مثالی از MSDN :


using System;
using System.IO;
class FStream
{
static void Main()
{
const string fileName = "Test#@@#.dat";
// Create random data to write to the file.
byte[] dataArray = new byte[100000];
new Random().NextBytes(dataArray);
using(FileStream
fileStream = new FileStream(fileName, FileMode.Create))
{
// Write the data to the file, byte by byte.
for(int i = 0; i < dataArray.Length; i++)
{
fileStream.WriteByte(dataArray[i]);
}
// Set the stream position to the beginning of the file.
fileStream.Seek(0, SeekOrigin.Begin);
// Read and verify the data.
for(int i = 0; i < fileStream.Length; i++)
{
if(dataArray[i] != fileStream.ReadByte())
{
Console.WriteLine("Error writing data.");
return;
}
}
Console.WriteLine("The data was written to {0} " +
"and verified.", fileStream.Name);
}
}
}