نمایش نتایج 1 تا 4 از 4

نام تاپیک: درخواست توضیح در مورد بستن فایل ها

  1. #1
    کاربر دائمی آواتار Sina.iRoid
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    TEH
    پست
    320

    Question درخواست توضیح در مورد بستن فایل ها

    سلام به همه دوستان عزیز.

    امکانش هست که در مورد علت بستن فایل ها یه توضیح مختصر و مفیدی و بدین!؟ و اینکه اگر یه فایلی و close() نکنیم ممکنه چه اتفاقی بیفته!؟


    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;


    public class TestMainClass {

    public static void main(String[] args) throws IOException{

    String source = "Hi, i'm \"Sina\" and now i want to use"
    + " \"FileOutputStream\" in Java programming.";

    byte[] buf = source.getBytes();

    FileOutputStream outputStream1 = new FileOutputStream(
    "F:"+File.separator+"11.Directory"+File.separator+ "file1.txt");

    outputStream1.write(buf);
    outputStream1.close();

    }
    }


    ممنون اگر راهنماییم کنید

  2. #2

    نقل قول: درخواست توضیح در مورد بستن فایل ها

    سلام.
    بطور معمول در جاوا قرار بر اینه که هر شیء قابل بستن (مثل انواع استریم ها, کانکشن ها و...) هر وقت داشت از بین میرفت و مدیر سطل آشغال جاوا میخواست حذفش کنه (همون Dispose یا Finalize) بطور خودکار اون شیء close هم بشه. اما خب این وسط خیلی اتفاقا ممکنه بیفته که باعث بشه این کار رخ نده.
    اگه یه استریم فایل باز بمونه, اولا منابع سیستمی تخصیص داده شده برای باز کردن این استریم از بین نمیره و حافظه الکی هدر میره و ثانیا دسترسی به اون فایل دیگه به روش های معمول امکان پذیر نیست چون یه فایل در آن واحد میتونه یه استریم داشته باشه.
    واسه همین موارده که تاکید میشه حتی الامکان این اشیاء بصورت دستی close بشن و از بسته شدنشون مطمین بشیم.

    پ.ن:
    • از Java 7 به بعد میتونی در این موارد از ساختار Try-with-Resources استفاده کنی که در اونصورت جاوا مطمینا خودش اون شیء رو close میکنه و خیلی وقتا از پیچیدگی کار برنامه نویس خیلی کم میشه.
    • اضافه کردن عبارت throws به یه تابع به جهت اینکه از چک کردن استثناءها خلاص بشیم کار درستی نیست و علاوه بر اتفاقات عجیبی که ممکنه پیش بیاره به شدت Debug رو سخت میکنه.
    اگر به بهداشت و سلامت حیوانات علاقه دارید، از vetMD.ir دیدن کنید.
    وبلاگ شخصی من: fadavi.net

    اینجا کمتر سر می‌زنم. (تلگرام من)

  3. #3
    کاربر دائمی آواتار ahmad.mo74
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    تهران
    پست
    437

    نقل قول: درخواست توضیح در مورد بستن فایل ها

    سلام، بستن stream ها بعد از اتمام کارمون به این دلیله که اولا منابعی که برای stream استفاده شده بود آزاد بشه، دوم اینکه مثلا وقتی از File Stream استفاده میکنیم با بستن stream فایل آزاد بشه و اجازه استفاده از اون فایل به دیگران هم داده بشه.

    بستن InputStream ها خوبه ولی در مورد OutputStream ها باید حواسمون باشه قبل از بستن stream متد flush رو کال کنیم چون ممکنه بافر از دست بره، یعنی :


    FileOutputStream fileOutputStream = new FileOutputStream(file);
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(fileOutputStream));
    writer.write("...");
    writer.flush();
    writer.close();
    fileOutputStream.close();


    از jdk 7 به بعد هم که کار با try with resources راحت تر هم شده و حتی دیگه نیازی به flush کردن هم نیست :


    try (FileOutputStream fileOutputStream = new FileOutputStream("path");
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(fileOutputStream))) {
    writer.write("...");
    }

  4. #4
    کاربر دائمی آواتار ahmad.mo74
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    تهران
    پست
    437

    نقل قول: درخواست توضیح در مورد بستن فایل ها

    من داشتم مینوشتم کسی جواب نداده بود الان رفرش کردم دیدم آقای فدوی جواب دادن، ماشاالله سرعت بالاس :))

تاپیک های مشابه

  1. درخواست توضیح در مورد این کد
    نوشته شده توسط 1485159 در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 5
    آخرین پست: چهارشنبه 12 خرداد 1389, 11:51 صبح
  2. درخواست توضیح در مورد چند اصطلاح
    نوشته شده توسط shekoofeh در بخش طراحی وب (Web Design)
    پاسخ: 0
    آخرین پست: شنبه 04 آبان 1387, 18:56 عصر
  3. درخواست راهنمایی در مورد ایجاد فایل های راهنما با فرمت CHM به زبان فارسی
    نوشته شده توسط Programmer.G در بخش برنامه نویسی در 6 VB
    پاسخ: 11
    آخرین پست: چهارشنبه 04 اردیبهشت 1387, 23:35 عصر
  4. درخواست توضیح در مورد یک عبارت
    نوشته شده توسط kavehYn در بخش VB.NET
    پاسخ: 3
    آخرین پست: شنبه 21 مهر 1386, 20:55 عصر
  5. درخواست توضیح در مورد route print
    نوشته شده توسط SRG در بخش شبکه و Networking‌
    پاسخ: 4
    آخرین پست: پنج شنبه 05 آذر 1383, 13:01 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •