PDA

View Full Version : EOF



benyamin_pc
سه شنبه 10 بهمن 1385, 03:29 صبح
وقتی داریم فایل رو به صورت باینری می خونیم مثلا توسط تابع ReadInt32() انتهای فایل رو چطور میشه تشخیص داد که دیگه نخونیم؟

اَرژنگ
سه شنبه 10 بهمن 1385, 04:08 صبح
وقتی داریم فایل رو به صورت باینری می خونیم مثلا توسط تابع ReadInt32() انتهای فایل رو چطور میشه تشخیص داد که دیگه نخونیم؟
تابع ReadInt32 در کجاست؟ به کدام کلاس ربط داره.
در ضمن اگر به دکومنتیشن دات نت یک نگاه بندازید خیلی از جوابهاتان را داره.

benyamin_pc
سه شنبه 10 بهمن 1385, 05:57 صبح
کسی نمی دونه انتهای فایل رو در سی شارپ چجوری میشه تشخیص داد؟تو سی با eof می شد:ناراحت: تو سی شارپ با چیه؟

اَرژنگ
سه شنبه 10 بهمن 1385, 06:37 صبح
کسی نمی دونه انتهای فایل رو در سی شارپ چجوری میشه تشخیص داد؟تو سی با eof می شد:ناراحت: تو سی شارپ با چیه؟
در سی شارپ این سوال معنی نداره، اگر مثال کدی دارید که کار نمیکنه بفرستید کمک میکنیم .
آنلاین هلپ سی شارپ را بخوانید میبینید تمام این سوالهایه ساده را جواب داده.
وقتی هم که یکی ازتان سوال میپرسه که کمکتان جواب بدیدبه جایه اینکه وقتمان را تلف کنید
.

benyamin_pc
سه شنبه 10 بهمن 1385, 06:47 صبح
حاجا آقا کسی نخواست وقتتان را تلف کنه اما من در مورد نحوه تشخیص انتهای فایل پرسیدم شما از مکان تابع سوال می فرمایین
تو یه مثال از خود هلپ دات نت یه جا دیدم برای تشخیص اتنهای فایل( البته باینری نبود )کارکتر آخر دیده بود اگه null شه یعنی فایل تمومه اما تو باینری نمی دونم چجوری میشه

اَرژنگ
سه شنبه 10 بهمن 1385, 07:44 صبح
آقا من گفتم وقتمان ، نگفتم وقت من !:لبخند:
شما هم وقتتان با ارزشه.

http://www.thescripts.com/forum/thread238693.html

نحوه استفاده‌اش با سی فرق داره ، در سی‌شارپ از استریم و یا تکست ریدر استفاده میشه.
برایه پیدا کردن آخر فایل با استریم ریدر یک چیزی مانند این را استفاده مینکیم:


using (StreamReader sr = new StreamReader("TestFile.txt"))
{
String line;
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
ولی اگر شما میخواهید سی‌شارپ کار کنید، ببینید در سی شارپ چطور کار میکنند، روش کار در سی با سی‌شارپ کلی فرق داره (کلی هم شبیه هست)
آقا مخلصیم

benyamin_pc
سه شنبه 10 بهمن 1385, 09:08 صبح
دوست عزیز منم گفتم وقتتان نگفتم وقت تو!
دستتم درد نکنه اما منم تو پست قبلی منظورم همین بود که تست میکنه null نباشه اما این تو کار با فایل باینری چرا جواب نمیده؟

اَرژنگ
سه شنبه 10 بهمن 1385, 09:11 صبح
از چه کلاسی برایه خواندن فایل استفاده میکنید؟

benyamin_pc
سه شنبه 10 بهمن 1385, 09:18 صبح
FileStream h=new FileStream("g:\\adad.exe",FileMode.Open);
FileStream hh=new FileStream("g:\\adad2.exe",FileMode.Create);
BinaryReader k=new BinaryReader(h);
BinaryWriter kk=new BinaryWriter(hh);
while(k.?????()!=null){
kk.Write(k.ReadInt32());}
kk.Close();





این کد اونجا تو وایل چی بذارم که وقتی فایل تموم شد دیگه نخونه؟

اَرژنگ
سه شنبه 10 بهمن 1385, 09:24 صبح
مثال از :http://msdn2.microsoft.com/en-us/library/system.io.filestream.aspx


using (FileStream fs = File.OpenRead(path))
{
byte[] b = new byte[1024];
UTF8Encoding temp = new UTF8Encoding(true);
while (fs.Read(b,0,b.Length) > 0)
{
Console.WriteLine(temp.GetString(b));
}
}

benyamin_pc
سه شنبه 10 بهمن 1385, 09:44 صبح
FileStream h=new FileStream("g:\\adad.exe",FileMode.Open);
FileStream hh=new FileStream("g:\\adad2.exe",FileMode.Create);
BinaryReader k=new BinaryReader(h);
BinaryWriter kk=new BinaryWriter(hh);
while(h.Position<h.Length){
kk.Write(k.ReadInt32());}
kk.Close();


خودم فهمیدم
اونی که شما نوشتی مال این کار نبود
در هر صورت ازتون ممنونم

اَرژنگ
سه شنبه 10 بهمن 1385, 10:11 صبح
FileStream h=new FileStream("g:\\adad.exe",FileMode.Open);
FileStream hh=new FileStream("g:\\adad2.exe",FileMode.Create);
BinaryReader k=new BinaryReader(h);
BinaryWriter kk=new BinaryWriter(hh);
while(h.Position<h.Length){
kk.Write(k.ReadInt32());}
kk.Close();
خودم فهمیدم
اونی که شما نوشتی مال این کار نبود
در هر صورت ازتون ممنونم

در اصل من هم ممنونم، یا اینرا هیچ وقت ندید بودم یا ایکنه هم یادم رفته بود، به هر حال منم یک چیزی یاد گرفتم.
مرسی