Java כתיבה לקובץ – 4 דרכים לכתוב קובץ ב-Java

Java מספקת מספר דרכים לכתיבה לקובץ. אנו יכולים להשתמש ב־FileWriter, BufferedWriter, java 7 Files ו־FileOutputStream כדי לכתוב קובץ ב־Java.

Java Write to File

בואו נסתכל בקצרה על ארבע אפשרויות שיש לנו לביצוע כתיבה לקובץ ב־Java.

  1. FileWriter: FileWriter היא הדרך הפשוטה ביותר לכתוב קובץ ב־Java. היא מספקת שיטת כתיבה מעומקה לכתוב int, מערך בתים ומחרוזת לקובץ. ניתן גם לכתוב חלק מהמחרוזת או ממערך הבתים באמצעות FileWriter. FileWriter כותבת ישירות לקבצים וצריכה להישמש רק כאשר מספר הכתיבות נמוך.
  2. BufferedWriter: BufferedWriter דומה כמעט ל־FileWriter אך הוא משתמש במטמון פנימי כדי לכתוב נתונים לקובץ. לכן, אם מספר הפעולות לכתיבה גבוה, הפעולות האמיתיות של IO פחותות והביצועים טובים יותר. יש להשתמש ב־BufferedWriter כאשר מספר הפעולות לכתיבה גבוה.
  3. FileOutputStream: FileWriter ו־BufferedWriter מתואמים לכתיבת טקסט לקובץ, אך כאשר נדרשת מידע זרם גולמי להיות מוזן לקובץ, עליך להשתמש ב־FileOutputStream כדי לכתוב קובץ ב־java.
  4. Files: בְּ Java 7 נכנסה סיווג כלי הסיוע של קבצים וניתן לכתוב קובץ באמצעות פונקציית הכתיבה שלו. בתוך כך, זה משתמש פנימית ב־OutputStream כדי לכתוב מערך בתים לקובץ.

דוגמת כתיבה לקובץ בְּ Java

הנה הדוגמה המראה כיצד ניתן לכתוב קובץ בְּ Java באמצעות FileWriter, BufferedWriter, FileOutputStream, ו־Files בְּ Java. WriteFile.java

package com.journaldev.files;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Paths;

public class WriteFile {

    /**
     * This class shows how to write file in java
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) {
        String data = "I will write this String to File in Java";
        int noOfLines = 10000;
        writeUsingFileWriter(data);
        
        writeUsingBufferedWriter(data, noOfLines);
        
        writeUsingFiles(data);
        
        writeUsingOutputStream(data);
        System.out.println("DONE");
    }

    /**
     * Use Streams when you are dealing with raw data
     * @param data
     */
    private static void writeUsingOutputStream(String data) {
        OutputStream os = null;
        try {
            os = new FileOutputStream(new File("/Users/pankaj/os.txt"));
            os.write(data.getBytes(), 0, data.length());
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            try {
                os.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    /**
     * Use Files class from Java 1.7 to write files, internally uses OutputStream
     * @param data
     */
    private static void writeUsingFiles(String data) {
        try {
            Files.write(Paths.get("/Users/pankaj/files.txt"), data.getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * Use BufferedWriter when number of write operations are more
     * It uses internal buffer to reduce real IO operations and saves time
     * @param data
     * @param noOfLines
     */
    private static void writeUsingBufferedWriter(String data, int noOfLines) {
        File file = new File("/Users/pankaj/BufferedWriter.txt");
        FileWriter fr = null;
        BufferedWriter br = null;
        String dataWithNewLine=data+System.getProperty("line.separator");
        try{
            fr = new FileWriter(file);
            br = new BufferedWriter(fr);
            for(int i = noOfLines; i>0; i--){
                br.write(dataWithNewLine);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            try {
                br.close();
                fr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * Use FileWriter when number of write operations are less
     * @param data
     */
    private static void writeUsingFileWriter(String data) {
        File file = new File("/Users/pankaj/FileWriter.txt");
        FileWriter fr = null;
        try {
            fr = new FileWriter(file);
            fr.write(data);
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            //סגור משאבים
            try {
                fr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

}

אלו השיטות התקניות לכתיבת קובץ בְּ Java ועליך לבחור אחת מהן לפי דרישות הפרויקט שלך. זהו הכל לדוגמת כתיבה לקובץ בְּ Java.

ניתן לבדוק דוגמאות נוספות של קבצי IO בְּ Java בְּ מאגר הקוד שלנו בְּ GitHub.

Source:
https://www.digitalocean.com/community/tutorials/java-write-to-file