کار با فایل و I/O در جاوا

بنام خدا : در ادامه مبحث فایل و ورودی و خروجی در جاوا در خدمت دوستان هستم .

خواندن و نوشتن فایل

همچنان که قبلا هم گفتم  inputStream برای خواندن از یک سری داده بصورت جریانی از داده ها از منبع ورودی است (فایل , کیبورد ....) و outputStream نوشتن یک جریان  داده ای در منبع خروجی . در زیر یک ساختار سلسله مراتبی از کلاسها و اشیایی مورد استفاده در ساخت جریان داده یا DataStream رو میبینید :

FileInputStream :

برای ایجاد یک شی از این کلاس معمولا به دو شیوه عمل میکنیم :

 InputStream f = new FileInputStream("C:/java/hello");//تعریف شی و همزمان اختصاص یک مسیر فایل برای ایجاد جریان
File f = new File("C:/java/hello");//تعریف یک آبجکت فایل
InputStream f = new FileInputStream(f);//اختصاص فایل به جریان فایل 
حالا که یک شی از نوع جریان فایل ایجاد کردیم میتونیم از متدهاش استفاده کنیم .

متد با توضیحات
public void close() throws IOException{} این متد کل جریان رو میبنده و منابع سیستمی اختصاص داده شده به اون رو آزاد میکنه
protected void finalize() throws IOException {} برای اطمینان از اینکه هنگام تمام شدن کار با جریان فایل در زمان ازاد شده منابع سیستمی از از این پردازه جریان فایل حتما بسته شده باشه
public int read(int r) throws IOException{} برای خواندن یک بایت مشخص از جریان ورودی . در واقع بایت بعدی از داده ها رو برمیگردونه اگه به انتهای جریان داده ها برسه -1  رو برمیگردونه
public int read(byte[] r) throws IOException{} این متد به اندازه طول ارایه ای که بصورت پارامتر بهش پاس داده شده از جریان ورودی داده میخونه در پایان داده ها -1 رو برمیگردونه
public int available() throws IOException{} تعداد بایتهای موجو در جریان داده رو برمیگردونه
 

FileOutputStream :

برای ایجاد یک فایل نوشتن توی فایل استفاده میشه مثل آبجکت قبلی معمولا به دو روش میتونیم یک آبجکت از این نوع کلاس تعریف کنیم

 OutputStream f = new FileOutputStream("C:/java/hello") ;
//یا به شکل پایین
File f = new File("C:/java/hello");
OutputStream f = new FileOutputStream(f);

متدهای زیر برای استفاده از آبجکت تعریف شده از نوع خروجی فایل  هست :

متد با توضیحات
public void close() throws IOException{} بستن فایل خروجی و گرفتن تمام منابع اختصاص داده شده به فایل
protected void finalize()throws IOException {} اجرای ان متد برای اطمینان از بسته شدن فایل هنگام پایان استفاده از فایل هست
public void write(int w)throws IOException{} نوشتن بایت مشخص در داخل فایل خروجی
public void write(byte[] w) نوشتن یک ارایه از بایت ها در داخل خروجی بصورت یکجا.

مثال زیر رو دقت کنید :

 import java.io.*;

public class fileStreamTest{

    public static void main(String args[]){

        try{
            byte bWrite [] = {11,21,3,40,5};//تعریف یک ارایه از بایتها
            OutputStream os = new FileOutputStream("test.txt");//تعریف یک جریان خروجی فایل و اختصاص فایل خروجی
            for(int x=0; x < bWrite.length ; x++){به اندازه طول آرایه این حلقه اجرا میشه
                         os.write( bWrite[x] ); // داخل فایل خانه های آرایه رو مینویسه
                     }
              os.close();//بستن فایل و گرفتن منابع سیستمی از آن

            InputStream is = new FileInputStream("test.txt");//ایجاد یک جریان ورودی از فایل
            int size = is.available();//گرفتن اندازه محتوی فایل
            for(int i=0;i< size; i++){
                     System.out.print((char)is.read() + " ");//همزمان خواندن از فایل نوشتن در صفحه نمایش بصورت کاراکتری
                 }
            is.close();// بستن فایل ورودی
       }catch(IOException e){
             System.out.print("Exception");//چاپ خطای ورودی و خروجی در صورت ایجاد
       } 
    }
} 

FileReader , FileWriter :

برای خواندن و نوشتن در فایلها در جاوا راههای زیادی پیشبینی شده و استفاده از این  دو کلاس رو هم بایک مثال در پایین میبینید

 import java.io.*;

public class FileRead{

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

        File file = new File("Hello1.txt");
        // ساخت یک فایل
        file.createNewFile();
        // ساخت یک آبجکت برای نوشتن در فایل
        FileWriter writer = new FileWriter(file); 
        // نوشتن در فایل
        writer.write("This\n is\n an\n example\n"); 
        writer.flush();
        writer.close();

        //ایجاد یک آبجکت فایل ورودی
        FileReader fr = new FileReader(file);
        char [] a = new char[50];
        fr.read(a); // خواندن محتوی فایل ورودی
        for(char c : a)
            System.out.print(c); //چاپ کاراکتر ها یک به یک
        fr.close();
}
}

خروجی :

 This
is
an
example 

Directory یا مسیر ها در جاوا :

برای ساخت مسیر ها از کلاس File به همراه دو متد  مهم زیر استفاده میکنیم :

mkdir(): برای  ساخت یک دایرکتوری استفاده میشه در صورت مفقیت در ساخت true و در غیر اینصورت false رو برمیگردون (اگه مسیر از قبل موجود باشه یا اینکه مسیر رو اشتباه وارد کرده باشید)

mkdirs() : برای ساخت کسیر و مسیر والد مسیر استفاده میشه

مثال زیر قضیه رو روشنتر میکنه :

 import java.io.File;

public class CreateDir {
    public static void main(String args[]) {
    String dirname = "/tmp/user/java/bin";
    File d = new File(dirname);
    // ایجاد دایرکتوری.بصورت یکجا
    d.mkdirs();
    }
} 

گرفتن لیست دایرکتوری و فایلهای یک مسیر خاص در جاوا :

با استفاده از متد list از کلاس File این کار رو انجام میدیم :

 import java.io.File;

public class ReadDir {
    public static void main(String[] args) {

    File file = null;
    String[] paths;

    try{ 
        // ساخت آبجکت فایل
        file = new File("/tmp");

        // ایجاد آرایه ای از لیست دارکتوری و فایلها
        paths = file.list();

        // برای هر نام در لیست فایلها و مسیر ها
        for(String path:paths)
        {
            // چاپ نام فایلها و مسیرها
             System.out.println(path);
        }
    }catch(Exception e){
    //در صورت ایجاد خطا
    e.printStackTrace();
    }
  }
} 

خروجی :

 test1.txt
test2.txt
ReadDir.java
ReadDir.class 

تا جلسه بعد  در پناه پروردگار.


فایلهای ضمیمه
توجه! هیچ فایل ضمیمه ای برای این مطلب یافت نشد

نظرات شما نظر جدید