Selain boleh mengambil input daripada file, program juga boleh output ke file menggunakan class FileWriter. Sama seperti input, output juga mempunyai class untuk menjadikan output lebih efisyen menggunakan BufferedWriter.

FileWriter

Apabila kita menggunakan FileWriter, program akan create file walaupun file tersebut tidak wujud pada asalnya. Jika file tersebut telah wujud, FileWriter akan overwrite file tersebut. Sama seperti FileReader, kita mesti handle exception untuk class FileWriter:

package essential;

import java.io.FileWriter;
import java.io.IOException;

public class OutputKeFile {

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

        FileWriter writer = null;

        try {
            writer = new FileWriter("dingdong.txt");
        } finally {
            writer.close();
        }
    }
}

Kita boleh menggunakan method write() untuk menulis character atau string ke file:

package essential;

import java.io.FileWriter;
import java.io.IOException;

public class OutputKeFile {

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

        String cikgu = "Cikgu suka main bola, hari-hari cikgu main bola";

        FileWriter writer = null;

        try {
            writer = new FileWriter("dingdong.txt");
            writer.write(cikgu);
            writer.write(cikgu);
        } finally {
            writer.close();
        }
    }
}

Perhatikan program hanya tulis output dalam satu baris.

Untuk tulis dalam baris baru, kita tambah \r\n pada string tersebut:

package essential;

import java.io.FileWriter;
import java.io.IOException;

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

        String cikgu = "Cikgu suka main bola, hari-hari cikgu main bola";

        FileWriter writer = null;

        try {
            writer = new FileWriter("dingdong.txt");
            writer.write(cikgu + "\r\n");
            writer.write(cikgu);
        } finally {
            writer.close();
        }
    }
}

Tambah string pada file yang asal

Kita boleh menggunakan constructor FileWriter(String fileName, boolean append) untuk menentukan sama ada untuk tambah ke file yang asal ataupun tidak. Letak true pada parameter boolean append untuk menambah pada file yang asal:

package essential;

import java.io.FileWriter;
import java.io.IOException;

public class OutputKeFile {

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

        String cikgu = "Cikgu suka main bola, hari-hari cikgu main bola";

        FileWriter writer = null;

        try {
            writer = new FileWriter("dingdong.txt", true);
            writer.write(cikgu + "\r\n");
            writer.write(cikgu);
        } finally {
            writer.close();
        }
    }
}

Program akan sentiasa tambah string tersebut ke dalam file setiap kali kita run code tersebut.

BufferedWriter

BufferedWriter boleh digunakan untuk menjadikan program lebih efisyen. BufferedWriter digunakan untuk membantu FileWriter:

package essential;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class OutputKeFile {

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

        String cikgu = "Cikgu suka main bola, hari-hari cikgu main bola";

        BufferedWriter writer = null;

        try {
            writer = new BufferedWriter(new FileWriter("dingdong.txt"));
            writer.write(cikgu);
            writer.newLine();
            writer.write(cikgu, 11, 9);
        } finally {
            writer.close();
        }
    }
}

Kita boleh menggunakan method newLine() untuk membuat baris baru. Kita juga boleh menetapkan hanya sebahagian daripada string untuk keluar sebagai output.