PDA

View Full Version : کار با فایلها در c#



s_shahed
یک شنبه 25 آذر 1386, 09:38 صبح
به نام خدا
کسی در مورد کار با فایلها در c#اطلاعاتی ندارد؟
نمی دانم چه طور یک فایل را به صورت باینری باز کنم و به هر کدام از بیتهاش دسترسی داشته باشم؟
لطفاً هر کس می داند راهنمایی کند

sinpin
یک شنبه 25 آذر 1386, 09:41 صبح
در همین سایت جستجو کنید :


using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace TestWriteF
{
class Program
{
static void Main(string[] args)
{

{
FileStream fs = File.Create(Environment.CurrentDirectory + @"\settings.bin");
BinaryWriter bw = new BinaryWriter(fs);
long number = 100;
byte[] bytes = new byte[] { 95, 96, 97 };
string s = "test";

bw.Write(number);
bw.Write(bytes);
bw.Write(s);

bw.Close();
fs.Close();
}


{
FileStream fs = File.Open(Environment.CurrentDirectory + @"\settings.bin", FileMode.Open);
BinaryReader reader = new BinaryReader(fs);

long number = reader.ReadInt64();
byte[] bytes = reader.ReadBytes(3);
string s = reader.ReadString();

reader.Close();
fs.Close();

Console.WriteLine(number);
foreach (byte b in bytes)
{
Console.Write("[{0}]", b);
}
Console.WriteLine();
Console.WriteLine(s);
}


}
}
}

hassan razavi
یک شنبه 25 آذر 1386, 09:42 صبح
در MSDN یا همین سایت در مورد IO.FileStream جستجو کنید.

s_shahed
یک شنبه 25 آذر 1386, 10:08 صبح
لطف می کنید در مورد کدی که فرستادید توضیح بدهید.

s_shahed
یک شنبه 25 آذر 1386, 17:24 عصر
من هنوز جواب سؤالم را نگرفتم.
در MSDN و همین سایت هم گشتم ولی چیزی نیست که می خواهم.
خواهش می کنم راهنمایی بفرمایید.
در مورد کد هم لطف کنید توضیح دهید و اگر می توانید در windows Application مثال بزنید به طوری که مثلاً وقتی روی دکمه open کلیک می کنم، فایلم به صورت باینری باز شود و به بیتهاش هم بتوانم دسترسی داشته باشم و اندازش هم برای مهم است. چون می خواهم کوچکتر ازیک فایل باینری دیگر باشد تا بتوانم نظیر به نظیر روی بیت هایشان عملیات انجام دهم.
با تشکر

s_shahed
دوشنبه 26 آذر 1386, 11:49 صبح
من تازه کارم اگر کسی می تواند راهنمایی کند تا جوابم را بگیرم.
با تشکر

hassan razavi
دوشنبه 26 آذر 1386, 12:02 عصر
در کد زیر تک تک بایتهای برنامتون در یک آرایه از جنس بایت قرار می گیره (اسمش r هست)


FileInfo fi=new FileInfo("c:\\a.txt");
System.IO.FileStream fs = new System.IO.FileStream("c:\\a.txt",FileMode.Open);
byte[] r=new byte[fi.Length];
fs.Read(r,0,(int)fi.Length);
fs.Close();

amin joon
دوشنبه 26 آذر 1386, 12:17 عصر
دوست عزیز چرا شما دنبال لقمه آماده میگردید.
اگر نصف همین زمانی رو که منتظر جواب هستید یه جستجوی ساده روی سایت انجام میدادید ، زودتر به جواب میرسیدید.

برای کار با حافظه یه کلاس پایه به نام Stream وجود داره . کلاسهای مختلفی از این کلاس ارث بری کردند مثل fileStream که اشاره به یک فایل میکنه و کلاسهای مختلفی هم برای کار روی یک Stream طراحی شدن مثل
StreamReader، StreamWriter،
BinaryReader و BinaryWriter .
دو کلاس اول برای خواندن و نوشتن باینری از/در یک Stream و دو کلاس بعد هم برای خواندن و نوشتن به صورت متنی از/در یک Stream طراحی شدند.
این کلاس ها یه سری متد دارن که برای یادگیریشون میتونی به msdn مراجعه کنی.
توی کدی که دوست عزیزمون نوشتن ، ابتدا یک FileStream ایجاد شده که به یک فایل اشاره میکنه و بعد به کمک متد write یک مقدار از نوع int ، آرایه ای از نوع بایت و یک رشته داخل آن فایل نوشته شده و بعد به کمک متدهای کلاس BinaryReader این مقادیر مجددا از فایل خوانده شده.

GoOd LuCk