در انجام پروژه های دانشجویی در دانشگاه ها و حتی در برخی از پروژه های دنیای کسب و کار، هنگام برنامه نویسی با زبان برنامه نویسی جاوا (Java) گاهی اوقات نیاز است تا محتویات موجود درون یک فایل را خوانده و با توجه به رشته ها یا کاراکترهای موجود در فایل تصمیماتی بگیریم.
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
این فایل میتواند فایل دستورالعمل برنامه، تنظیمات، فایل خطاهای برنامه (error log) یا هر فایل متنی دیگری باشد.
خواندن فایل در برنامه نویسی java
برای خواندن فایل در زبان برنامه نویسی جاوا به طور معمول از دو کلاس زیر که در کتابخانه های جاوا وجود دارد استفاده میشود.
- FileReader برای خواندن فایل های متنی که حاوی متون با انکودینگ پیشفرض سیستم شماست
- FileInputStream برای خواندن فایل های متنی که حاوی کاراکتر های خاص هستند
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
شئ FileReader معمولا باید به عنوان ورودی به BufferedFileReader داده شود؛ با این روش موجب صرفه جویی در داده ها خواهیم شد و میتوان در یک زمان، داده های فایل را به صورت خط به خط، کاراکتر به کاراکتر یا هر حالت دیگری مورد استفاده قرار داد.
در ادامه با نوشتن یک مثال و نمونه کدهای آن، چگونگی استفاده از FileReader را توضیح خواهیم داد.
اگر بخواهیم یک فایل متنی معمولی را با زبان برنامه نویسی JAVA بخوانیم؛ ابتدا باید کلاس های مورد استفاده را درون برنامه خود اضافه کنیم:
import java.io.BufferedReader;
import java.io.FileReader;
1
2
3
import java.io.BufferedReader;
import java.io.FileReader;
در این مثال فرض میکنیم یک فایل در فولدری که حاوی کلاس نوشته شده توسط ما هست، به نام config.bat وجود دارد که میخواهیم محتویات درون آنرا در برنامه بخوانیم.
به دلیل اینکه ممکن است فایل مورد نظر ما وجود نداشته باشد یا سطح دسترسی آن طوری تنظیم شده باشد که باز کردن و خواندن آن ممکن نباشد، کد ما در هنگام تلاش برای باز کردن فایل، با ارور مواجه میشود.
برای جلوگیری از روی دادن خطا یا استثنا (Exception) باید آنرا handle کنیم؛ بنابراین کدهای مربوط به باز کردن فایل و در ادامه، خواندن خط به خط محتویات آنرا درون یک بلوک try-catch گذاشته تا از بروز Exception ناخواسته جلوگیری کنیم؛ اکنون کلاس مربوط به مدیریت استثنا را نیز به پروژه خود اضافه میکنیم.
import java.io.IOException;
1
import java.io.IOException;
حال کدهای مربوط به کلاس و باز کردن فایل را به صورت زیر مینویسیم:
public class FileReadTest {
public static void main(String [] args) {
String fileName = "temp.txt";
String line = null;
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
try {
FileReader fr = new FileReader(fileName);
BufferedReader br = new BufferedReader(fileReader);
//Not Complete .!
}
catch(IOException e) {
e.printStackTrace();
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
19
public class FileReadTest {
public static void main(String [] args) {
String fileName = "temp.txt";
String line = null;
try {
FileReader fr = new FileReader(fileName);
BufferedReader br = new BufferedReader(fileReader);
//Not Complete .!
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
}
catch(IOException e) {
e.printStackTrace();
}
}
}
همانطور که میبینید قطعه کد مربوط به باز کردن فایل مورد نظر، درون بلوک try-catch قرار گرفته تا از بروز Exception احتمالی جلوگیری کند.
شئ BufferedReader یک متد به نام readLine() دارد که در هر بار صدا زدن، یک خط از فایل باز شده را خروجی برمیگرداند؛ حال از این متد برای چاپ خطوط فایل استفاده میکنیم.
بدیهی است که به جای چاپ کردن، هر عملیات دیگری (مانند جستجو، ذخیره کردن و .) را میتوان انجام داد.
while( (line = bufferedReader.readLine() ) != null ) {
System.out.println(line);
}
1
2
3
while( (line = bufferedReader.readLine() ) != null ) {
System.out.println(line);
}
در قطعه کد فوق مقدار خطی که باید خوانده شود را درون متغیر line که پیش تر از این به صورت String تعریف شده بود با صدا زدن متد readLine() قرار داده و بررسی میکنیم که مقدار آن null نباشد (null بودن خروجی این متد به معنای اتمام خطوط موجود در فایل است) و سپس آنرا چاپ میکنیم.
پس از اینکه استفاده ما از فایل به اتمام رسید بهتر است آنرا ببنیدم تا از به وجود آمدن مشکلات احتمالی جلوگیری شود.
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
در نتیجه کد ما برای باز کردن و خواندن خط به خط یک فایل متنی معمولی با انکودینگ پیشفرض سیستم به صورت زیر خواهد بود. (در اکثر مواقع همین روش استفاده میشود.)
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class FileReadTest {
public static void main(String [] args) {
String fileName = "config.bat";
String line = null;
try {
FileReader fr = new FileReader(fileName);
BufferedReader br = new BufferedReader(fr);
while( (line = br.readLine() ) != null ) {
System.out.println(line);
}
br.close();
}
catch(IOException e) {
e.printStackTrace();
}
}
}
1
2
3
4
5
6
7
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
8
9
10
11
12
13
14
15
16
17
19
20
21
22
23
24
25
26
27
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class FileReadTest {
public static void main(String [] args) {
String fileName = "config.bat";
String line = null;
try {
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
FileReader fr = new FileReader(fileName);
BufferedReader br = new BufferedReader(fr);
while( (line = br.readLine() ) != null ) {
System.out.println(line);
}
br.close();
}
catch(IOException e) {
e.printStackTrace();
}
}
}
اکنون اگر بخواهیم یک فایل باینری یا فایلی محتوی کاراکترهایی که برای سیستم غیر قابل تشخیص و هضم است را باز کرده و پردازش کنیم باید به جای FileReader از FileInputStream استفاده کرد.
import java.io.FileInputStream;
import java.io.IOException;
public class BinaryFileReadTest {
public static void main(String [] args) {
String fileName = "config.bat";
try {
FileInputStream inputStream = new FileInputStream(fileName);
int c = 0;
while( (c = inputStream.read()) != -1 ) {
System.out.print((char)(c));
}
inputStream.close();
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
}
catch(IOException e) {
e.printStackTrace();
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
19
20
21
22
23
24
import java.io.FileInputStream;
import java.io.IOException;
public class BinaryFileReadTest {
public static void main(String [] args) {
String fileName = "config.bat";
try {
FileInputStream inputStream = new FileInputStream(fileName);
int c = 0;
while( (c = inputStream.read()) != -1 ) {
System.out.print((char)(c));
}
inputStream.close();
}
catch(IOException e) {
e.printStackTrace();
}
}
}
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
در قطعه کد بالا برای خواندن یک Binary File از FileInputStream استفاده شده که این شئ یک متد با نام read() داشته و در هر بار صدا زدن آن، کد باینری (عددی) کاراکتر موجود را به ما باز میگرداند.
اگر در هنگام صدا زدن read() مقدار برگردانده شده -1 بود، به این معنی است که فایل به اتمام رسیده است.
برای چاپ کردن این کاراکتر مقدار عددی دریافت شده نیز آنرا تبدیل به کاراکتر (cast) کرده ایم.
توجه داشته باشید که در هر دو حالت، متغیر filename میتواند آدرس فایل مورد نظر (به صورت نسبی یا معمولی) در فرمت رشته (String) و یا یک شئ از کلاس File باشد.
علام موضوعات پروژه برای آزمون جاوامقدماتی، جاوا پیشرفته، برنامه نویسی اندروید
دانشجویان گرامی که تمایل دارند در آزمون جاوامقدماتی، جاوا پیشرفته، برنامه نویسی اندروید شرکت کنند، می بایست پروژه های ذیل را انجام داده و برای روز آزمون ارائه دهند
موضوع آزمون جاوا مقدماتی:
ایجاد یک سیستم HRM (مدیریت منابع انسانی سازمان) و یا CRM (مدیریت مشتری )که در ترم SE تحت دسکتاپ است.
موضوع آزمون جاوا پیشرفته:
ایجاد یک سیستم HRM (مدیریت منابع انسانی سازمان) و یا CRM (مدیریت مشتری ) که در ترم EE تحت وب باشد.
موضوع آزمون برنامه نویسی اندروید: طراحی اپلیکیشن معرفی رستوران ها یا یک فروشگاه یا یک مکان دلخواه
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
پروژه مورد نظر باید شامل موارد زیر باشد:
صفحه ورود کاربران (login)، در صورت نداشتن اشتراک، یک قسمت ثبت نام وجود داشته باشد که کاربر از طریق آن ثبت نام کرده و یک کد اشتراک به صورت تصادفی (Random) و یکتا دریافت کند با آن کد login کند ( کد باید داخل پایگاه داده ذخیره شده و چک شود.)
استفاده از پیغام های مناسب در صورت بروز هر گونه خطا در جاهای لازم
استفاده از list view برای نمایش لیست رستوران ها
نمایش جزئیات هر رستوران با انتخاب نام آن روی list view
استفاده از گرافیک، رنگ و icon های مناسب برای صفحات اهمیت به سزایی داشته و قسمت زیادی از نمره هر بخش را شامل می شود (راهنما: دانلود عکس از سایت هایی مانند flaticon.com,icon finder می تواند به شما کمک کند.)
قسمت تحقیقاتی : استفاده از یک منوی باز شونده در برنامه برای دسترسی آسان به قسمت های مختلف (دانلود sample از سایت androidhive)
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
قسمت هایی برای برقراری تماس، ارسال sms و مشاهده سایت
انتخاب رستوران های دلخواه و ارسال آنها به لیست علاقه مندی ها در صورت انتخاب امتیازآن درRating Bar نمایش داده شود و به لیست علاقه مندی ها اضافه شود.
خواندن JSON رستوران های جدید ودانلود عکس آنها و نمایش آنها در یک صفحه دلخواه
استفاده از view pager در جای دلخواهی از برنامه
ذخیره یک عکس و متن در فایل (مکان ذخیره فایل اختیاری است
azsoftir.com
09367292276
azsoftir@gmail.com
azsoftir.com
azsoftir.com
09367292276
azsoftir@gmail.com
درباره این سایت