Apa cara paling sederhana untuk membuat dan menulis ke file (teks) di Jawa?
Apa cara paling sederhana untuk membuat dan menulis ke file (teks) di Jawa?
Jawaban:
Perhatikan bahwa masing-masing contoh kode di bawah ini dapat dibuang IOException
. Coba / tangkap / akhirnya blok dihilangkan karena singkatnya. Lihat tutorial ini untuk informasi tentang penanganan pengecualian.
Perhatikan bahwa masing-masing contoh kode di bawah ini akan menimpa file jika sudah ada
Membuat file teks:
PrintWriter writer = new PrintWriter("the-file-name.txt", "UTF-8");
writer.println("The first line");
writer.println("The second line");
writer.close();
Membuat file biner:
byte data[] = ...
FileOutputStream out = new FileOutputStream("the-file-name");
out.write(data);
out.close();
Pengguna Java 7+ dapat menggunakan Files
kelas untuk menulis ke file:
Membuat file teks:
List<String> lines = Arrays.asList("The first line", "The second line");
Path file = Paths.get("the-file-name.txt");
Files.write(file, lines, StandardCharsets.UTF_8);
//Files.write(file, lines, StandardCharsets.UTF_8, StandardOpenOption.APPEND);
Membuat file biner:
byte data[] = ...
Path file = Paths.get("the-file-name");
Files.write(file, data);
//Files.write(file, data, StandardOpenOption.APPEND);
"PrintWriter prints formatted representations of objects to a text-output stream. "
jawaban Bozho lebih benar, meskipun terlihat rumit (Anda selalu dapat membungkusnya dengan beberapa metode utilitas).
writer.close()
harus di blok akhirnya
Di Jawa 7 dan lebih tinggi:
try (Writer writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("filename.txt"), "utf-8"))) {
writer.write("something");
}
Ada beberapa utilitas yang berguna untuk itu:
Perhatikan juga bahwa Anda dapat menggunakan FileWriter
, tetapi menggunakan penyandian default, yang seringkali merupakan ide yang buruk - yang terbaik adalah menentukan penyandian secara eksplisit.
Di bawah ini adalah jawaban asli, sebelum Jawa 7
Writer writer = null;
try {
writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("filename.txt"), "utf-8"));
writer.write("Something");
} catch (IOException ex) {
// Report
} finally {
try {writer.close();} catch (Exception ex) {/*ignore*/}
}
Lihat juga: Membaca, Menulis, dan Membuat File (termasuk NIO2).
close()
sembarang aliran yang melilit yang lain akan menutup semua aliran dalam juga.
Jika Anda sudah memiliki konten yang ingin Anda tulis ke file (dan tidak dihasilkan dengan cepat), java.nio.file.Files
penambahan di Java 7 sebagai bagian dari I / O asli menyediakan cara paling sederhana dan paling efisien untuk mencapai tujuan Anda.
Pada dasarnya membuat dan menulis ke file hanya satu baris, apalagi satu panggilan metode sederhana !
Contoh berikut membuat dan menulis ke 6 file berbeda untuk menunjukkan bagaimana itu dapat digunakan:
Charset utf8 = StandardCharsets.UTF_8;
List<String> lines = Arrays.asList("1st line", "2nd line");
byte[] data = {1, 2, 3, 4, 5};
try {
Files.write(Paths.get("file1.bin"), data);
Files.write(Paths.get("file2.bin"), data,
StandardOpenOption.CREATE, StandardOpenOption.APPEND);
Files.write(Paths.get("file3.txt"), "content".getBytes());
Files.write(Paths.get("file4.txt"), "content".getBytes(utf8));
Files.write(Paths.get("file5.txt"), lines, utf8);
Files.write(Paths.get("file6.txt"), lines, utf8,
StandardOpenOption.CREATE, StandardOpenOption.APPEND);
} catch (IOException e) {
e.printStackTrace();
}
public class Program {
public static void main(String[] args) {
String text = "Hello world";
BufferedWriter output = null;
try {
File file = new File("example.txt");
output = new BufferedWriter(new FileWriter(file));
output.write(text);
} catch ( IOException e ) {
e.printStackTrace();
} finally {
if ( output != null ) {
output.close();
}
}
}
}
output.close()
melempar IOException
Berikut adalah sedikit contoh program untuk membuat atau menimpa file. Ini versi yang panjang sehingga dapat dipahami dengan lebih mudah.
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
public class writer {
public void writing() {
try {
//Whatever the file path is.
File statText = new File("E:/Java/Reference/bin/images/statsTest.txt");
FileOutputStream is = new FileOutputStream(statText);
OutputStreamWriter osw = new OutputStreamWriter(is);
Writer w = new BufferedWriter(osw);
w.write("POTATO!!!");
w.close();
} catch (IOException e) {
System.err.println("Problem writing to the file statsTest.txt");
}
}
public static void main(String[]args) {
writer write = new writer();
write.writing();
}
}
Cara yang sangat sederhana untuk membuat dan menulis ke file di Java:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
public class CreateFiles {
public static void main(String[] args) {
try{
// Create new file
String content = "This is the content to write into create file";
String path="D:\\a\\hi.txt";
File file = new File(path);
// If file doesn't exists, then create it
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
// Write in file
bw.write(content);
// Close connection
bw.close();
}
catch(Exception e){
System.out.println(e);
}
}
}
File.exists()/createNewFile()
kode di sini adalah baik sia-sia dan boros. Sistem operasi sudah harus melakukan hal yang persis sama ketika new FileWriter()
dibuat. Anda memaksakan itu terjadi dua kali.
FileWriter
sebagai berikut:new FileWriter(file.getAbsoluteFile(),true)
Menggunakan:
try (Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("myFile.txt"), StandardCharsets.UTF_8))) {
writer.write("text to write");
}
catch (IOException ex) {
// Handle me
}
Menggunakan try()
akan menutup streaming secara otomatis. Versi ini pendek, cepat (buffered) dan memungkinkan memilih pengodean
Fitur ini diperkenalkan di Java 7.
StandardCharsets.UTF_8
alih-alih String "utf-8" (Ini mencegah kesalahan kesalahan ketik) ...new OutputStreamWriter(new FileOutputStream("myFile.txt"), StandardCharsets.UTF_8)...
- java.nio.charset.StandardCharsets
diperkenalkan di java 7
Di sini kita memasukkan string ke file teks:
String content = "This is the content to write into a file";
File file = new File("filename.txt");
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(content);
bw.close(); // Be sure to close BufferedWriter
Kita dapat dengan mudah membuat file baru dan menambahkan konten ke dalamnya.
Karena penulis tidak menentukan apakah mereka memerlukan solusi untuk versi Java yang telah EoL (oleh Sun dan IBM, dan ini secara teknis adalah JVM yang paling luas), dan karena kenyataan bahwa kebanyakan orang tampaknya telah menjawab pertanyaan penulis sebelum ditentukan bahwa itu adalah file teks (non-biner) , saya telah memutuskan untuk memberikan jawaban saya.
Pertama-tama, Java 6 secara umum telah mencapai akhir masa pakainya, dan karena penulis tidak menentukan ia membutuhkan kompatibilitas sebelumnya, saya kira itu secara otomatis berarti Java 7 atau lebih tinggi (Java 7 belum dimatikan oleh IBM). Jadi, kita dapat melihat langsung di file I / O tutorial: https://docs.oracle.com/javase/tutorial/essential/io/legacy.html
Sebelum rilis Java SE 7, kelas java.io.File adalah mekanisme yang digunakan untuk file I / O, tetapi memiliki beberapa kelemahan.
- Banyak metode yang tidak melempar pengecualian ketika gagal, jadi tidak mungkin mendapatkan pesan kesalahan yang berguna. Misalnya, jika penghapusan file gagal, program akan menerima "hapus gagal" tetapi tidak akan tahu apakah itu karena file tidak ada, pengguna tidak memiliki izin, atau ada masalah lain.
- Metode ganti nama tidak bekerja secara konsisten di seluruh platform.
- Tidak ada dukungan nyata untuk tautan simbolik.
- Dibutuhkan lebih banyak dukungan untuk metadata, seperti izin file, pemilik file, dan atribut keamanan lainnya. Mengakses file metadata tidak efisien.
- Banyak metode File tidak skala. Meminta daftar direktori besar melalui server dapat mengakibatkan hang. Direktori besar juga dapat menyebabkan masalah sumber daya memori, yang mengakibatkan penolakan layanan.
- Itu tidak mungkin untuk menulis kode yang dapat diandalkan yang secara rekursif bisa berjalan pohon file dan merespons dengan tepat jika ada tautan simbolik melingkar.
Oh well, itu mengesampingkan java.io.File. Jika suatu file tidak dapat ditulis / ditambahkan, Anda mungkin tidak dapat mengetahui alasannya.
Kita dapat terus melihat tutorialnya: https://docs.oracle.com/javase/tutorial/essential/io/file.html#common
Jika Anda memiliki semua baris yang akan Anda tulis (tambahkan) ke file teks sebelumnya , pendekatan yang disarankan adalah https://docs.oracle.com/javase/8/docs/api/java/nio/fio/files/Files.html# tulis-java.nio.file.Path-java.lang.Iterable-java.nio.charset.Charset-java.nio.file.OpenOption ...-
Berikut ini contoh (disederhanakan):
Path file = ...;
List<String> linesInMemory = ...;
Files.write(file, linesInMemory, StandardCharsets.UTF_8);
Contoh lain (tambahkan):
Path file = ...;
List<String> linesInMemory = ...;
Files.write(file, linesInMemory, Charset.forName("desired charset"), StandardOpenOption.CREATE, StandardOpenOption.APPEND, StandardOpenOption.WRITE);
Jika Anda ingin menulis konten file saat berjalan : https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#newBufferedWriter-java.nio.file.Path-java .nio.charset.Charset-java.nio.file.OpenOption ...-
Contoh sederhana (Java 8 atau lebih tinggi):
Path file = ...;
try (BufferedWriter writer = Files.newBufferedWriter(file)) {
writer.append("Zero header: ").append('0').write("\r\n");
[...]
}
Contoh lain (tambahkan):
Path file = ...;
try (BufferedWriter writer = Files.newBufferedWriter(file, Charset.forName("desired charset"), StandardOpenOption.CREATE, StandardOpenOption.APPEND, StandardOpenOption.WRITE)) {
writer.write("----------");
[...]
}
Metode-metode ini membutuhkan usaha minimal dari pihak penulis dan harus disukai semua orang lain ketika menulis ke file [teks].
FileNotFoundException
yang dilemparkan ketika operasi gagal.
Jika Anda ingin memiliki pengalaman yang relatif bebas rasa sakit, Anda juga dapat melihat paket Apache Commons IO , lebih khusus FileUtils
kelasnya .
Jangan pernah lupa untuk memeriksa perpustakaan pihak ketiga. Joda-Time untuk manipulasi tanggal, Apache Commons LangStringUtils
untuk operasi string umum dan semacamnya dapat membuat kode Anda lebih mudah dibaca.
Java adalah bahasa yang hebat, tetapi pustaka standar terkadang agak rendah. Tetap kuat, tapi level rendah.
FileUtils
adalah static void write(File file, CharSequence data)
. Contoh penggunaan: import org.apache.commons.io.FileUtils;
FileUtils.write(new File("example.txt"), "string with data");
. FileUtils
juga memiliki writeLines
, yang mengambil Collection
garis.
Jika Anda karena alasan tertentu ingin memisahkan tindakan membuat dan menulis, setara Java touch
adalah
try {
//create a file named "testfile.txt" in the current working directory
File myFile = new File("testfile.txt");
if ( myFile.createNewFile() ) {
System.out.println("Success!");
} else {
System.out.println("Failure!");
}
} catch ( IOException ioe ) { ioe.printStackTrace(); }
createNewFile()
melakukan pemeriksaan keberadaan dan file buat secara atom. Ini bisa bermanfaat jika Anda ingin memastikan bahwa Anda adalah pembuat file sebelum menulis, misalnya.
touch
dalam arti umum tetapi lebih pada penggunaan sekunder umum untuk membuat file tanpa menulis data untuk itu. Tujuan sentuhan yang didokumentasikan adalah untuk memperbarui stempel waktu pada file. Membuat file jika tidak ada sebenarnya adalah efek samping, dan dapat dinonaktifkan dengan sakelar.
exists()/createNewFile()
urutan secara harfiah membuang-buang waktu dan ruang.
Berikut adalah beberapa cara yang memungkinkan untuk membuat dan menulis file di Java:
Menggunakan FileOutputStream
try {
File fout = new File("myOutFile.txt");
FileOutputStream fos = new FileOutputStream(fout);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
bw.write("Write somthing to the file ...");
bw.newLine();
bw.close();
} catch (FileNotFoundException e){
// File was not found
e.printStackTrace();
} catch (IOException e) {
// Problem when writing to the file
e.printStackTrace();
}
Menggunakan FileWriter
try {
FileWriter fw = new FileWriter("myOutFile.txt");
fw.write("Example of content");
fw.close();
} catch (FileNotFoundException e) {
// File not found
e.printStackTrace();
} catch (IOException e) {
// Error when writing to the file
e.printStackTrace();
}
Menggunakan PrintWriter
try {
PrintWriter pw = new PrintWriter("myOutFile.txt");
pw.write("Example of content");
pw.close();
} catch (FileNotFoundException e) {
// File not found
e.printStackTrace();
} catch (IOException e) {
// Error when writing to the file
e.printStackTrace();
}
Menggunakan OutputStreamWriter
try {
File fout = new File("myOutFile.txt");
FileOutputStream fos = new FileOutputStream(fout);
OutputStreamWriter osw = new OutputStreamWriter(fos);
osw.write("Soe content ...");
osw.close();
} catch (FileNotFoundException e) {
// File not found
e.printStackTrace();
} catch (IOException e) {
// Error when writing to the file
e.printStackTrace();
}
Untuk lebih lanjut periksa tutorial ini tentang Cara membaca dan menulis file di Jawa .
FileWriter
atau OutputStreamWriter
ditutup pada akhirnya blok?
Menggunakan:
JFileChooser c = new JFileChooser();
c.showOpenDialog(c);
File writeFile = c.getSelectedFile();
String content = "Input the data here to be written to your file";
try {
FileWriter fw = new FileWriter(writeFile);
BufferedWriter bw = new BufferedWriter(fw);
bw.append(content);
bw.append("hiiiii");
bw.close();
fw.close();
}
catch (Exception exc) {
System.out.println(exc);
}
Cara terbaik adalah menggunakan Java7: Java 7 memperkenalkan cara baru untuk bekerja dengan filesystem, bersama dengan kelas utilitas baru - File. Menggunakan kelas Files, kita dapat membuat, memindahkan, menyalin, menghapus file dan direktori juga; itu juga dapat digunakan untuk membaca dan menulis ke file.
public void saveDataInFile(String data) throws IOException {
Path path = Paths.get(fileName);
byte[] strToBytes = data.getBytes();
Files.write(path, strToBytes);
}
Menulis dengan FileChannel Jika Anda berurusan dengan file besar, FileChannel bisa lebih cepat daripada IO standar. Kode berikut menulis String ke file menggunakan FileChannel:
public void saveDataInFile(String data)
throws IOException {
RandomAccessFile stream = new RandomAccessFile(fileName, "rw");
FileChannel channel = stream.getChannel();
byte[] strBytes = data.getBytes();
ByteBuffer buffer = ByteBuffer.allocate(strBytes.length);
buffer.put(strBytes);
buffer.flip();
channel.write(buffer);
stream.close();
channel.close();
}
Menulis dengan DataOutputStream
public void saveDataInFile(String data) throws IOException {
FileOutputStream fos = new FileOutputStream(fileName);
DataOutputStream outStream = new DataOutputStream(new BufferedOutputStream(fos));
outStream.writeUTF(data);
outStream.close();
}
Menulis dengan FileOutputStream
Sekarang mari kita lihat bagaimana kita dapat menggunakan FileOutputStream untuk menulis data biner ke file. Kode berikut mengkonversi byte int String dan menulis byte ke file menggunakan FileOutputStream:
public void saveDataInFile(String data) throws IOException {
FileOutputStream outputStream = new FileOutputStream(fileName);
byte[] strToBytes = data.getBytes();
outputStream.write(strToBytes);
outputStream.close();
}
Menulis dengan PrintWriter kita dapat menggunakan PrintWriter untuk menulis teks berformat ke file:
public void saveDataInFile() throws IOException {
FileWriter fileWriter = new FileWriter(fileName);
PrintWriter printWriter = new PrintWriter(fileWriter);
printWriter.print("Some String");
printWriter.printf("Product name is %s and its price is %d $", "iPhone", 1000);
printWriter.close();
}
Menulis dengan BufferedWriter: gunakan BufferedWriter untuk menulis sebuah String ke file baru:
public void saveDataInFile(String data) throws IOException {
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
writer.write(data);
writer.close();
}
tambahkan sebuah String ke file yang ada:
public void saveDataInFile(String data) throws IOException {
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName, true));
writer.append(' ');
writer.append(data);
writer.close();
}
Untuk membuat file tanpa menimpa file yang ada:
System.out.println("Choose folder to create file");
JFileChooser c = new JFileChooser();
c.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
c.showOpenDialog(c);
c.getSelectedFile();
f = c.getSelectedFile(); // File f - global variable
String newfile = f + "\\hi.doc";//.txt or .doc or .html
File file = new File(newfile);
try {
//System.out.println(f);
boolean flag = file.createNewFile();
if(flag == true) {
JOptionPane.showMessageDialog(rootPane, "File created successfully");
}
else {
JOptionPane.showMessageDialog(rootPane, "File already exists");
}
/* Or use exists() function as follows:
if(file.exists() == true) {
JOptionPane.showMessageDialog(rootPane, "File already exists");
}
else {
JOptionPane.showMessageDialog(rootPane, "File created successfully");
}
*/
}
catch(Exception e) {
// Any exception handling method of your choice
}
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterExample {
public static void main(String [] args) {
FileWriter fw= null;
File file =null;
try {
file=new File("WriteFile.txt");
if(!file.exists()) {
file.createNewFile();
}
fw = new FileWriter(file);
fw.write("This is an string written to a file");
fw.flush();
fw.close();
System.out.println("File written Succesfully");
} catch (IOException e) {
e.printStackTrace();
}
}
}
exists()/createNewFile()
urutan secara harfiah membuang-buang waktu dan ruang.
package fileoperations;
import java.io.File;
import java.io.IOException;
public class SimpleFile {
public static void main(String[] args) throws IOException {
File file =new File("text.txt");
file.createNewFile();
System.out.println("File is created");
FileWriter writer = new FileWriter(file);
// Writes the content to the file
writer.write("Enter the text that you want to write");
writer.flush();
writer.close();
System.out.println("Data is entered into file");
}
}
exists()/createNewFile()
urutan secara harfiah membuang-buang waktu dan ruang.
Hanya satu baris!
path
dan line
Strings
import java.nio.file.Files;
import java.nio.file.Paths;
Files.write(Paths.get(path), lines.getBytes());
lines
. Jika ya java.lang.String
, maka panggilan getBytes()
akan menghasilkan byte menggunakan platform default encoding, yang tidak terlalu baik dalam kasus umum.
Jika kita menggunakan Java 7 dan di atasnya dan juga tahu konten yang akan ditambahkan (ditambahkan) ke file kita dapat menggunakan metode newBufferedWriter dalam paket NIO.
public static void main(String[] args) {
Path FILE_PATH = Paths.get("C:/temp", "temp.txt");
String text = "\n Welcome to Java 8";
//Writing to the file temp.txt
try (BufferedWriter writer = Files.newBufferedWriter(FILE_PATH, StandardCharsets.UTF_8, StandardOpenOption.APPEND)) {
writer.write(text);
} catch (IOException e) {
e.printStackTrace();
}
}
Ada beberapa hal yang perlu diperhatikan:
StandardCharsets
.try-with-resource
pernyataan di mana sumber daya secara otomatis ditutup setelah percobaan.Meskipun OP belum bertanya tetapi untuk berjaga-jaga jika kita ingin mencari baris yang memiliki beberapa kata kunci spesifik misalnya confidential
kita dapat menggunakan stream API di Jawa:
//Reading from the file the first line which contains word "confidential"
try {
Stream<String> lines = Files.lines(FILE_PATH);
Optional<String> containsJava = lines.filter(l->l.contains("confidential")).findFirst();
if(containsJava.isPresent()){
System.out.println(containsJava.get());
}
} catch (IOException e) {
e.printStackTrace();
}
Membaca dan menulis file menggunakan input dan outputstream:
//Coded By Anurag Goel
//Reading And Writing Files
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class WriteAFile {
public static void main(String args[]) {
try {
byte array [] = {'1','a','2','b','5'};
OutputStream os = new FileOutputStream("test.txt");
for(int x=0; x < array.length ; x++) {
os.write( array[x] ); // Writes the bytes
}
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");
}
}
}
Cukup sertakan paket ini:
java.nio.file
Dan kemudian Anda dapat menggunakan kode ini untuk menulis file:
Path file = ...;
byte[] buf = ...;
Files.write(file, buf);
Di Java 8 gunakan Files and Paths dan gunakan konstruksi try-with-resources.
import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class WriteFile{
public static void main(String[] args) throws IOException {
String file = "text.txt";
System.out.println("Writing to file: " + file);
// Files.newBufferedWriter() uses UTF-8 encoding by default
try (BufferedWriter writer = Files.newBufferedWriter(Paths.get(file))) {
writer.write("Java\n");
writer.write("Python\n");
writer.write("Clojure\n");
writer.write("Scala\n");
writer.write("JavaScript\n");
} // the file will be automatically closed
}
}
Ada beberapa cara sederhana, seperti:
File file = new File("filename.txt");
PrintWriter pw = new PrintWriter(file);
pw.write("The world I'm coming");
pw.close();
String write = "Hello World!";
FileWriter fw = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(fw);
fw.write(write);
fw.close();
bw
tidak digunakan.
Anda bahkan dapat membuat file sementara menggunakan properti sistem , yang tidak tergantung pada OS yang Anda gunakan.
File file = new File(System.*getProperty*("java.io.tmpdir") +
System.*getProperty*("file.separator") +
"YourFileName.txt");
Menggunakan perpustakaan Guava Google, kita dapat membuat dan menulis ke file dengan sangat mudah.
package com.zetcode.writetofileex;
import com.google.common.io.Files;
import java.io.File;
import java.io.IOException;
public class WriteToFileEx {
public static void main(String[] args) throws IOException {
String fileName = "fruits.txt";
File file = new File(fileName);
String content = "banana, orange, lemon, apple, plum";
Files.write(content.getBytes(), file);
}
}
Contoh membuat fruits.txt
file baru di direktori root proyek.
Membaca koleksi dengan pelanggan dan menyimpan ke file, dengan JFilechooser.
private void writeFile(){
JFileChooser fileChooser = new JFileChooser(this.PATH);
int retValue = fileChooser.showDialog(this, "Save File");
if (retValue == JFileChooser.APPROVE_OPTION){
try (Writer fileWrite = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileChooser.getSelectedFile())))){
this.customers.forEach((c) ->{
try{
fileWrite.append(c.toString()).append("\n");
}
catch (IOException ex){
ex.printStackTrace();
}
});
}
catch (IOException e){
e.printStackTrace();
}
}
}
Setidaknya ada beberapa cara membuat file dan menulisnya:
File kecil (1.7)
Anda dapat menggunakan salah satu metode menulis untuk menulis byte, atau baris, ke file.
Path file = Paths.get("path-to-file");
byte[] buf = "text-to-write-to-file".;
Files.write(file, buf);
Metode ini menangani sebagian besar pekerjaan untuk Anda, seperti membuka dan menutup aliran, tetapi tidak dimaksudkan untuk menangani file besar.
Menulis File yang lebih besar dengan Menggunakan Buffered Stream I / O (1.7)
The java.nio.file
paket mendukung menyalurkan I / O, yang bergerak data dalam buffer, melewati beberapa lapisan yang dapat bottleneck streaming I / O.
String s = "much-larger-text-to-write-to-file";
try (BufferedWriter writer = Files.newBufferedWriter(file, StandardCharsets.UTF_8)) {
writer.write(s, 0, s.length());
}
Pendekatan ini lebih disukai karena kinerjanya yang efisien terutama ketika menyelesaikan sejumlah besar operasi penulisan. Operasi yang disangga memiliki efek ini karena mereka tidak diharuskan memanggil metode penulisan sistem operasi untuk setiap byte tunggal, mengurangi operasi I / O yang mahal.
Menggunakan NIO API untuk menyalin (dan membuat yang baru) file dengan Outputstream (1.7)
Path oldFile = Paths.get("existing-file-path");
Path newFile = Paths.get("new-file-path");
try (OutputStream os = new FileOutputStream(newFile.toFile())) {
Files.copy(oldFile, os);
}
Ada juga metode tambahan yang memungkinkan untuk menyalin semua byte dari aliran input ke file.
Penulis File (teks) (<1.7)
Menulis langsung ke file (kinerja kurang) dan harus digunakan hanya ketika jumlah penulisan kurang. Digunakan untuk menulis data yang berorientasi karakter ke file.
String s= "some-text";
FileWriter fileWriter = new FileWriter("C:\\path\\to\\file\\file.txt");
fileWriter.write(fileContent);
fileWriter.close();
FileOutputStream (binary) (<1,7)
FileOutputStream dimaksudkan untuk menulis aliran byte mentah seperti data gambar.
byte data[] = "binary-to-write-to-file".getBytes();
FileOutputStream out = new FileOutputStream("file-name");
out.write(data);
out.close();
Dengan pendekatan ini orang harus mempertimbangkan untuk selalu menulis array byte daripada menulis satu byte pada suatu waktu. Speedup bisa sangat signifikan - hingga 10 x lebih tinggi atau lebih. Oleh karena itu, disarankan untuk menggunakan write(byte[])
metode ini kapan pun memungkinkan.