PDA

View Full Version : نوشتن و خواندن یک رکورد از struct در فایل متنی



ofog_22
دوشنبه 23 فروردین 1389, 19:07 عصر
سلام
من می خوام یک رکورد از یک ساختمان رو در فایل بنویسم و یا بخونم
فقط و فقط دستورات نوشتن و خواندن یک رکورد در فایل
می شه راهنمایی ام کنین مثل همیشه
ممنونم از لطفتون و منتظرم

ofog_22
دوشنبه 23 فروردین 1389, 22:19 عصر
لطفا یه نفر سریع جوابم رو بده
خیلی لازم دارم:افسرده:

tefos666
دوشنبه 23 فروردین 1389, 22:57 عصر
سلام -شما در دات نت براي مبحث File Processing با استفاده از فضاي نام System.IO قادر به فراخواني كلاس هاي زير هستيد

StreamReader : براي خواندن از فايلهاي text استفاده ميگردد

StreamWriter : براي نوشتن بر روي فايلهاي text استفاده ميگردد


مثال زير رو ببينيد :‌ يك instance از جنس StreamReader با نام SR ميسازيم




System.IO.StreamReader SR = new System.IO.StreamReader("C:\\file.txt");


مثلا ميخواهيم محتواي فايل بالا در يك تكست باكس كه multiline شده نمايش داده شود

نكته :فايل متني (text) چون sequential‌ ميباشد بايد خط به خط خوانده شوند

معرفي چند متد

Readline : خواندن خط به خط
ReadToEnd :‌خواندن يكجاي تمام متن




textbox1.text=SR.ReadToEnd();



نكته دوم :‌اصولا در سيستم عامل اين دسته از فايلها را GC نميتواند خالي كند و حتما توجه داشته باشيد كه آن را خودتان نهايتا Close كنيد.




SR.Close();


به اين مثال توجه كنيد



using System;
using System.IO;

class Test
{
public static void Main()
{
try { // Create an instance of StreamReader to read from a file.
// The using statement also closes the StreamReader.
using (StreamReader sr = new StreamReader("TestFile.txt"))
{
string line;
// Read and display lines from the file until the end of
// the file is reached.
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
}
catch (Exception e)
{
// Let the user know what went wrong.
Console.WriteLine("The file could not be read:");
Console.WriteLine(e.Message);
}
}
}




همينطور براي نوشتن در فايل از كلاس StreamWriter‌استفاد كنيد

به اين مثال توجه كنيد :



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

namespace StreamReadWrite
{
class Program
{
static void Main(string[] args)
{
// Get the directories currently on the C drive.
DirectoryInfo[] cDirs = new DirectoryInfo(@"c:\").GetDirectories();

// Write each directory name to a file.
using (StreamWriter sw = new StreamWriter("CDriveDirs.txt"))
{
foreach (DirectoryInfo dir in cDirs)
{
sw.WriteLine(dir.Name);

}
}

// Read and show each line from the file.
string line = "";
using (StreamReader sr = new StreamReader("CDriveDirs.txt"))
{
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
}
}
}





اميدوارم مفيد واقع شده باشه :لبخند:

ofog_22
چهارشنبه 25 فروردین 1389, 17:12 عصر
ممنونم
ولی ببخشید ها تو این که اصلا کدی واسه نوشتم رکورد از ساختمان تو فایل نیست

saeedalg
چهارشنبه 25 فروردین 1389, 17:43 عصر
اولا Struct كه نه يك كلاس رو ميتوني با استفاده از Serializable اين كار رو باهاش بكني براي اين كار Attribute،‌Serializable رو براي كلاست ست ميكني بعد با XmlSerializer (http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx)يا BinarySerializer يا SoapFormatter اون رو سريالايز ميكني.
براي نمونه كد به اين (http://msdn.microsoft.com/en-us/library/system.serializableattribute.aspx)مراجعه كن.

ofog_22
پنج شنبه 26 فروردین 1389, 12:52 عصر
ببینین چطور تو سی پلاس می آییم یه ساختمان درست می کنیم و بعد رکورد به رکورد تو فایل می نویسیم یا می خوانیم
همین دستورات رو تو سی شارپ می خوام
لطفا هر کی بلده زود بگه خیلی لازم دارم