وقتی داریم فایل رو به صورت باینری می خونیم مثلا توسط تابع ReadInt32() انتهای فایل رو چطور میشه تشخیص داد که دیگه نخونیم؟
Printable View
وقتی داریم فایل رو به صورت باینری می خونیم مثلا توسط تابع ReadInt32() انتهای فایل رو چطور میشه تشخیص داد که دیگه نخونیم؟
کسی نمی دونه انتهای فایل رو در سی شارپ چجوری میشه تشخیص داد؟تو سی با eof می شد:ناراحت: تو سی شارپ با چیه؟
حاجا آقا کسی نخواست وقتتان را تلف کنه اما من در مورد نحوه تشخیص انتهای فایل پرسیدم شما از مکان تابع سوال می فرمایین
تو یه مثال از خود هلپ دات نت یه جا دیدم برای تشخیص اتنهای فایل( البته باینری نبود )کارکتر آخر دیده بود اگه null شه یعنی فایل تمومه اما تو باینری نمی دونم چجوری میشه
آقا من گفتم وقتمان ، نگفتم وقت من !:لبخند:
شما هم وقتتان با ارزشه.
http://www.thescripts.com/forum/thread238693.html
نحوه استفادهاش با سی فرق داره ، در سیشارپ از استریم و یا تکست ریدر استفاده میشه.
برایه پیدا کردن آخر فایل با استریم ریدر یک چیزی مانند این را استفاده مینکیم:
ولی اگر شما میخواهید سیشارپ کار کنید، ببینید در سی شارپ چطور کار میکنند، روش کار در سی با سیشارپ کلی فرق داره (کلی هم شبیه هست)
using (StreamReader sr = new StreamReader("TestFile.txt"))
{
String line;
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
آقا مخلصیم
دوست عزیز منم گفتم وقتتان نگفتم وقت تو!
دستتم درد نکنه اما منم تو پست قبلی منظورم همین بود که تست میکنه null نباشه اما این تو کار با فایل باینری چرا جواب نمیده؟
از چه کلاسی برایه خواندن فایل استفاده میکنید؟
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();
این کد اونجا تو وایل چی بذارم که وقتی فایل تموم شد دیگه نخونه؟
مثال از :http://msdn2.microsoft.com/en-us/lib...ilestream.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));
}
}
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();
خودم فهمیدم
اونی که شما نوشتی مال این کار نبود
در هر صورت ازتون ممنونم