التعامل مع الملفات فى الجافا 6_الطرق المختلفة لقراءة ملف كبيانات ثنائية Convert a File to Byte Array

اذهب الى الأسفل

التعامل مع الملفات فى الجافا 6_الطرق المختلفة لقراءة ملف كبيانات ثنائية Convert a File to Byte Array Empty التعامل مع الملفات فى الجافا 6_الطرق المختلفة لقراءة ملف كبيانات ثنائية Convert a File to Byte Array

مُساهمة من طرف vbcoder في الثلاثاء أكتوبر 29, 2019 4:51 pm

هناك أوقات نحتاج فيها إلى قراءة محتوى الملف في صفيف بايت مثل عندما نحتاج إلى إرسال محتوى الملف عبر الشبكة أو بمعنى اوضح قراءة الملف كبيانات ثنائية و تخزينها فى مصفوفة بيانات Byte Array و يتم ذلك بعدة طرق على النحو التالى :

1_باستخدام الفئة FileInputStream

يمكنك استخدام الفئة java.io.FileInputStream لقراءة محتوى الملف في صفيف بايت باستخدام الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] وذلك على النحو التالى :

الكود:

public class FileToByteArrayDemo {

    public static void main(String[] args) {
        File file = new File("F:\\NetJS\\Articles.txt");
        
        // استخدام الطريقة لقراءة الملف و تخزينها فى مصفوفة بايت
        byte[] bArray = readFileToByteArray(file);

        //حلقة تكرارية للحصول على البيانات المخزنة فى المصفوفة ومن ثم طباعتها
        for (int i = 0; i < bArray.length; i++){
           System.out.print((char) bArray[i]);
        }  
    }
    
    /**
     * إنشاء طريقة لقراءة الملف المحدد و تخزينة فى مصوفة
     * file content into a byte array
     * @param file
     * @return
     */
    private static byte[] readFileToByteArray(File file){
        FileInputStream fis = null;
        // إنشاء مصفوفة بايت باستخدام طول الملف
        // file.length returns long which is cast to int
        byte[] bArray = new byte[(int) file.length()];
        try{
            fis = new FileInputStream(file);
            fis.read(bArray);
            fis.close();        
            
        }catch(IOException ioExp){
            ioExp.printStackTrace();
        }
        return bArray;
    }
}



2_بإستخدام readAllBytes

من بداية الاصدار السابع للجافا يمكنك استخدام الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] التى لديها الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] التى تقوم بقراة كافة بيتات الملف و يتم ذلك على النحو التالى :

الكود:
public class FileToByteArrayDemo {

    public static void main(String[] args) {
                
        Path path = Paths.get("F:\\NetJS\\Articles.txt");
        try {

             //إنشاء مصفوفة و تخزين بيانات الملف بداخلها
            byte[] bArray = Files.readAllBytes(path);


            // حلقة تكرارية للحصول على البيتات المخزنة فى المصفوفة و من ثم طباعتها
            for (int i = 0; i < bArray.length; i++){
                  System.out.print((char) bArray[i]);
            }
        } catch (IOException e) {
          
            e.printStackTrace();
        }      
    }
}


3_ باستخدام المكتبة Apache commons IO

تزودنا المكتبة Apache IO بفئتين يمكننا من خلالها قراءة محتوي ملف البيانات وهما على النحو التالى :


  1. الفئة IOUtils.toByteArray : ويتم تمرير الكائن FileInputStream كباراميتر لها
  2. الفئة FileUtils.readFileToByteArray :ويتم تمرير الكائن File كــ باراميتر لها



مثال للفئة IOUtils.toByteArray

الكود:

import java.io.FileInputStream;
import java.io.IOException;
import org.apache.commons.io.IOUtils;

public class FileToByteArrayDemo {

    public static void main(String[] args) {
        File file = new File("F:\\NetJS\\Articles.txt");  
    
        // استخدام الطريقة التى قمنا بانشاءها لقراءة الملف
        readToByteArrayUsingCommons(file);    
    }
    

    private static void readToByteArrayUsingCommons(File file){

              // إنشاء الكائن FileInputStream
        try(FileInputStream fis = new FileInputStream(file)) {

              // استخدام الطريقة toByteArray لقراءة محتوي الملف مع تمرير الكائن FileInputStream

            byte[] bArray = IOUtils.toByteArray(fis);

               // حلقة تكرارية للحصول على بيانات المصفوفة ومن ثم طباعتها
            for (int i = 0; i < bArray.length; i++){
               System.out.print((char) bArray[i]);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }        
    }
}



مثال للفئة FileUtils.readFileToByteArray


الكود:

import java.io.FileInputStream;
import java.io.IOException;
import org.apache.commons.io.IOUtils;

public class FileToByteArrayDemo {

    public static void main(String[] args) {
        File file = new File("F:\\NetJS\\Articles.txt");  
    
        // استخدام الطريقة التى قمنا بانشاءها لقراءة الملف
        readToByteArrayUsingCommons(file);    
    }
    

    private static void readToByteArrayUsingCommons(File file){


              // استخدام الطريقة toByteArray لقراءة محتوي الملف مع تمرير الكائن FileInputStream

           bArray = FileUtils.readFileToByteArray(file);

               // حلقة تكرارية للحصول على بيانات المصفوفة ومن ثم طباعتها
            for (int i = 0; i < bArray.length; i++){
               System.out.print((char) bArray[i]);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }        
    }
}
vbcoder
vbcoder
...
...

تاريخ التسجيل : 18/11/2018
المساهمات : 37
النقاط : 63
التقيم : 4
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى