نوشتن فایل در Java
Store.java را باز کنید و با FileWriter حروف را داخل note.txt بنویسید. tea و یک شکست خط را در فایل بگذارید، بعد writer را close کنید. با javac Store.java ترجمه کنید و java Store را اجرا کنید. صفحه خالی میماند — حروف به فایل میروند، نه به ترمینال. دموی دوم به همان شکل oak مینویسد و هرچه از قبل داخل بود را عوض میکند. موضوع Paths را برای صفحهٔ بعد بگذارید؛ این درس فقط متن کوتاه را با FileWriter ذخیره میکند.
ذخیرهٔ tea و خالی ماندن صفحه
صفحهٔ خواندن فایلی را باز کرد که از قبل oak داشت. این صفحه همان متن را از خودِ برنامه میسازد یا عوض میکند. فایل تدریس را با نام Store.java باز کنید. نام کلاس عمومی را Store نگه دارید تا با نام فایل یکی باشد. دموهای scanner باقیماندهٔ Reader، خطهای throw مربوط به Signal، بلوکهای catch مربوط به Guard، و هر Scanner صفحهکلید روی System.in را پاک کنید. برنامه نباید منتظر تایپ بماند. این صفحه به import نوشتن نیاز دارد، نه خواندن.
نزدیک بالا نگه دارید:
import java.io.FileWriter;
import java.io.IOException;
روی main بنویسید throws IOException تا نوشتن ناموفق بتواند بهعنوان آن استثنای checked از main بیرون برود. داخل main نام دیسک را برای نوشتن باز کنید:
FileWriter out = new FileWriter("note.txt");
یک خط کوتاه با شکست خط بنویسید:
out.write("tea\n");
بعد ذخیره را تمام کنید:
out.close();
در این فایل تدریس اول System.out.println صدا نزنید. صفحهٔ خالی بخشی از درس است: نوشتن همان چاپ نیست.
import java.io.FileWriter;
import java.io.IOException;
public class Store {
public static void main(String[] args) throws IOException {
FileWriter out = new FileWriter("note.txt");
out.write("tea\n");
out.close();
}
}
از پوشهای که بعد از اجرا باید note.txt را نگه دارد، javac Store.java را اجرا کنید. وقتی پرانتزها، آکولادها و نقطهویرگولها جور باشند، خودِ javac سطری از خودش نمینویسد. بعد java Store را اجرا کنید — نه java Store.java. پسوند .java را از فرمان اجرا بردارید. اگر javac نتواند FileWriter را پیدا کند، سطر import نیست یا غلط تایپ شده — قبل از دنبال کردن خطاهای دیگر آن را برگردانید.
ترمینال خالی میماند. درست است. بعد از اجرا note.txt را در ویرایشگر باز کنید و باید tea را در خط اول ببینید. اگر ترمینال oak چاپ کند یا منتظر ورودی صفحهکلید بماند، هنوز باقیماندهٔ Reader را اجرا میکنید — به java Store بروید. اگر از IllegalArgumentException مقدار empty میبینید، باقیماندهٔ پرتاب Signal هنوز فعال است. اگر blocked یا after میبینید، باقیماندهٔ catch مربوط به Guard هنوز کلاسی است که اجرا میکنید.
close ذخیره را تمام میکند. قبل از close خط را ذخیرهشدهٔ مطمئن نشمارید. بعد از close حروف وقتی برنامه تمام شود در note.txt میمانند. حرف زدن از mode زبانهای دیگر اینجا لازم نیست: این سازندهٔ FileWriter نام را برای نوشتن باز میکند و وقتی آن نام از قبل باشد محتوای قدیمی را عوض میکند. ساختن note.txt وقتی نبود بخشی از همان رفتار باز-برای-نوشتن است. موقع ذخیره Scanner یا nextLine صدا نزنید؛ آنها مال خواندناند.
یکبار اجرا را راه بروید. Java از Store.main شروع میکند. FileWriter نام note.txt را برای نوشتن باز میکند. write مقدار tea و شکست خط را میگذارد. close نویسنده را تمام میکند. چیزی چاپ نمیشود. اگر close را رد کنید و برنامه زود بایستد، فایل ممکن است ناقص به نظر برسد — close را در فایل تدریس نگه دارید. برنامه را از پوشهای اجرا کنید که میخواهید note.txt آنجا ظاهر شود، تا نام ساده کنار فایل کلاس جور شود.
نوشتن بعدی حروف قدیمی را عوض میکند
برنامهٔ دوم از نو با همان شکل شروع میکند. هنوز از FileWriter روی note.txt استفاده میکند، اما متن oak است نه tea.
import java.io.FileWriter;
import java.io.IOException;
public class Store {
public static void main(String[] args) throws IOException {
FileWriter out = new FileWriter("note.txt");
out.write("oak\n");
out.close();
}
}
با javac Store.java ترجمه کنید، بعد java Store را اجرا کنید. صفحه دوباره خالی میماند. بعد از این اجرا، note.txt مقدار oak دارد نه tea. خط قدیمی عوض شد. آن تضاد با ابزارهای append است که در این صفحه استفاده نمیکنید — این نوشتن سازنده برای داستان تدریس محتوای فایل را از نو شروع میکند. املای نام فایل باید با چیزی که بعداً باز میکنید یکی باشد: note.txt، نه دوقلوی غلطتایپشده کنارش.
اگر هنوز دموی Reader صفحهٔ قبل را دارید میتوانید تأیید کنید: خواندن note.txt بعد از نوشتن oak باید oak چاپ کند. لازم نیست Reader را داخل Store.java بچسبانید. نوشتن و خواندن را فایل تدریس جدا نگه دارید تا هر درس روشن بماند. یک برنامه مینویسد؛ برنامهٔ دیگر میخواند؛ آن جدایی هر صفحه را صادق نگه میدارد.
در این صفحه API مربوط به Paths اختراع نکنید. شما رشتهٔ سادهٔ نام "note.txt" را کنار فایل کلاس مینویسید. صفحهٔ بعد دربارهٔ paths بهعنوان موضوع خودش است. همچنین پوشهٔ گمشده را معمای امروز نکنید — پوشهٔ کاری را همان جایی نگه دارید که ترجمه و اجرا میکنید.
مقایسه با خواندن روی Reader
در صفحهٔ files، java Reader خطی را چاپ کرد که از قبل روی دیسک بود، یا برای نام گمشده با FileNotFoundException ایستاد. در این صفحه، java Store خودش حروف را آنجا میگذارد. خواندن و نوشتن شغلهای جدا میمانند. وقتی میخواهید ببینید چه نشسته، فایلهای Reader را فقط بهعنوان تاریخ نزدیک نگه دارید؛ برای دموهای نوشتن با java Store اجرا کنید.
FileWriter و write نشانههای تازهاند. close هنوز مهم است، همانطور که موقع خواندن Scanner.close مهم بود. رد کردن close بعد از ترجمهٔ موفق اشتباه رایج باقیمانده است.
این صفحه برای paths چه میگذارد
این صفحه متن کوتاه را با نام فایل ساده کنار کلاس ذخیره میکند. صفحهٔ بعد paths را دقیقتر معرفی میکند. اینجا روی FileWriter، write و close بمانید. هنوز اشیاء path را بهعنوان الزام روی این دموهای Store اضافه نکنید.
پیش از paths
میتوانید tea را در note.txt بنویسید و صفحهٔ خالی ببینید در حالی که فایل آن خط را نگه میدارد. میتوانید بعد oak بنویسید و متن قدیمی را عوض کنید. Store.java را ترجمه کنید و برای هر دموی نگهداشتهشده java Store را بهنوبت اجرا کنید. وقتی میخواهید تأیید کنید چه نشسته، فایل متنی را در ویرایشگر باز کنید. صفحهٔ بعد paths است، جایی که نامها و مکانها تمرکز خودشان را میگیرند.
نوشتن tea را برای ذخیرهٔ اول روشن نگه دارید. نوشتن oak را برای عوض کردن روشن نگه دارید. APIهای path را از این صفحه دور نگه دارید. این سه عادت ایست بازرسی پیش از ادامه است. وقتی بعد از اجرای دوم java Store فایل note.txt مقدار oak را نشان داد، نوشتن فایل کارش را برای این درس تمام کرده و برای موضوع بعدی دربارهٔ paths آمادهاید.
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود