PDA

View Full Version : سوال: در مورد system.io.file.create



sinashahab
پنج شنبه 22 اسفند 1387, 21:33 عصر
سلام
چرا وقتی یک فایل رو ایجاد می کنی تا چند ثانیه نمیشه یه اون دسترسی داشت .(مثلا سیو کردن)
ایا راهی هست که پس از ساخت بشه سریعا به اون دسترسی داشته باشی ؟
یا زمان آزاد شدن فایل رو بفهمم .
یادم میاد تو ویبی چیزی به نام doevent بود ولی C# ....
ممنون میشم کمکم کنید .
:تشویق::تشویق:

Amir Oveisi
پنج شنبه 22 اسفند 1387, 21:37 عصر
بعد از اینکه فایل رو ساختین اونو close کنید

sinashahab
پنج شنبه 22 اسفند 1387, 22:47 عصر
چجوری ؟
ممنون .

sinashahab
پنج شنبه 22 اسفند 1387, 23:43 عصر
کسی نمی دونه ؟

mohsen_csharp
دوشنبه 26 اسفند 1387, 11:13 صبح
اگه فایلی که می خواهی بسازی متنی باشه:


System.IO.StreamWriter w = new System.IO.StreamWriter(@"c:\a.txt");
w.Write("a");
w.Close();

اگه باینری باشه:


System.IO.FileStream fsw = new System.IO.FileStream(@"c:\a.bin", System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.Write);
System.IO.BinaryWriter bw = new System.IO.BinaryWriter(fsw);
byte data = 97;
bw.Write(data);
bw.Close();

sinashahab
دوشنبه 26 اسفند 1387, 11:41 صبح
اگه هیچکدوم نبود چی . مثلا :
system.io.file.create("d:\s")
حالا میشه اینو خارج کرد ؟

mohsen_csharp
دوشنبه 26 اسفند 1387, 11:46 صبح
تمام فایل ها به صورت پیش فرض باینری هستند. پس در موارد متنی هم میشه از روش باینری استفاده کرد. روش متنی برای سادگی کار با فایل های متنی ، ایجاد شده است.
شما از روش باینری استفاده کن و هر پسوندی دوست داشتی به فایل بده. اگه خواستی هم پسوند نده.

sinashahab
دوشنبه 26 اسفند 1387, 12:05 عصر
ممنون ولی به نظر من از همون stramwriter استفاده کنم راحت تره .
اخه دارم یه حساب داری بدون دیتابیس می سازم .

mohsen_csharp
دوشنبه 26 اسفند 1387, 12:17 عصر
ممنون ولی به نظر من از همون stramwriter استفاده کنم راحت تره .
اخه دارم یه حساب داری بدون دیتابیس می سازم .

در این صورت باید تمام اطلاعات داخل فایل به صورت متنی ذخیره بشن.

hasan_esfahan
دوشنبه 26 اسفند 1387, 13:29 عصر
سلام
این یک تجربه شخصی است
من هم زمانی که می ساختم و می خواستم به ان دسترسی داشته باشم یپغام خطا می داد و میگفت همچین فایلی وجود ندارد ولی ایجاد کردن ان را با یک تابع نوشتم حل شد

حامد مصافی
دوشنبه 26 اسفند 1387, 19:09 عصر
سلام
این یک تجربه شخصی است
من هم زمانی که می ساختم و می خواستم به ان دسترسی داشته باشم یپغام خطا می داد و میگفت همچین فایلی وجود ندارد ولی ایجاد کردن ان را با یک تابع نوشتم حل شد

دوست گرامی مشکل شما از آنجا ناشی میشه که بعد از ایجاد فایل استریم نویسنده مربوطه را نبسته اید. اما وقتی این کار را در یک تابع انجام دادید هنگام خروج از تابع GC به طور خودکار تمام آیتم ها من جمله استریمی را که فایل را قفل کرده است، را رها کرده است.

hasan_esfahan
دوشنبه 26 اسفند 1387, 23:47 عصر
دوست گرامی مشکل شما از آنجا ناشی میشه که بعد از ایجاد فایل استریم نویسنده مربوطه را نبسته اید. اما وقتی این کار را در یک تابع انجام دادید هنگام خروج از تابع GC به طور خودکار تمام آیتم ها من جمله استریمی را که فایل را قفل کرده است، را رها کرده است.


با عرض پوزش از شما بنده چنین کاری نیز انجام دادم ولی جواب نداد

mohsen_csharp
سه شنبه 27 اسفند 1387, 09:19 صبح
نقل قول:
دوست گرامی مشکل شما از آنجا ناشی میشه که بعد از ایجاد فایل استریم نویسنده مربوطه را نبسته اید. اما وقتی این کار را در یک تابع انجام دادید هنگام خروج از تابع GC به طور خودکار تمام آیتم ها من جمله استریمی را که فایل را قفل کرده است، را رها کرده است.
با عرض پوزش از شما بنده چنین کاری نیز انجام دادم ولی جواب نداد


GC تحت شرایطی اقدام به جمع آوری زباله ها می کنه . شاید در برنامه شما این شرایط در آن لحظه فراهم نشده باشه.