1. Pengenalan
Dalam tutorial ringkas ini, kita akan melihat bagaimana kita menggunakan Java untuk menambahkan data ke isi file - dengan beberapa cara sederhana.
Mari mulakan dengan bagaimana kita dapat melakukan ini menggunakan FileWriter inti Java .
2. Menggunakan FileWriter
Berikut adalah ujian mudah - membaca fail yang ada, menambahkan beberapa teks, dan kemudian memastikannya dilampirkan dengan betul:
@Test public void whenAppendToFileUsingFileWriter_thenCorrect() throws IOException { FileWriter fw = new FileWriter(fileName, true); BufferedWriter bw = new BufferedWriter(fw); bw.write("Spain"); bw.newLine(); bw.close(); assertThat(getStringFromInputStream( new FileInputStream(fileName))) .isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n"); }
Perhatikan bahawa konstruktor FileWriter menerima penanda boolean jika kita ingin menambahkan data ke fail yang ada.
Sekiranya kita menetapkannya menjadi palsu, maka kandungan yang ada akan diganti.
3. Menggunakan FileOutputStream
Seterusnya - mari kita lihat bagaimana kita dapat melakukan operasi yang sama - menggunakan FileOutputStream :
@Test public void whenAppendToFileUsingFileOutputStream_thenCorrect() throws Exception { FileOutputStream fos = new FileOutputStream(fileName, true); fos.write("Spain\r\n".getBytes()); fos.close(); assertThat(StreamUtils.getStringFromInputStream( new FileInputStream(fileName))) .isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n"); }
Begitu juga, konstruktor FileOutputStream menerima boolean yang harus ditetapkan ke true untuk menandakan bahawa kita ingin menambahkan data ke fail yang ada.
4. Menggunakan java.nio.file
Selanjutnya - kita juga dapat menambahkan kandungan ke fail menggunakan fungsi di java.nio.file - yang diperkenalkan di JDK 7:
@Test public void whenAppendToFileUsingFiles_thenCorrect() throws IOException { String contentToAppend = "Spain\r\n"; Files.write( Paths.get(fileName), contentToAppend.getBytes(), StandardOpenOption.APPEND); assertThat(StreamUtils.getStringFromInputStream( new FileInputStream(fileName))) .isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n"); }
5. Menggunakan Jambu Batu
Untuk mula menggunakan Jambu Batu, kita perlu menambahkan kebergantungannya ke pom.xml kami :
com.google.guava guava 23.0
Sekarang, mari kita lihat bagaimana kita dapat mulai menggunakan Jambu untuk menambahkan kandungan ke fail yang ada:
@Test public void whenAppendToFileUsingFileWriter_thenCorrect() throws IOException { File file = new File(fileName); CharSink chs = Files.asCharSink( file, Charsets.UTF_8, FileWriteMode.APPEND); chs.write("Spain\r\n"); assertThat(StreamUtils.getStringFromInputStream( new FileInputStream(fileName))) .isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n"); }
6. Menggunakan Apache Commons IO FileUtils
Akhirnya - mari kita lihat bagaimana kita dapat menambahkan kandungan ke fail yang ada menggunakan Apache Commons IO FileUtils .
Pertama, mari tambahkan kebergantungan Apache Commons IO ke pom.xml kami :
commons-io commons-io 2.6
Sekarang, mari kita lihat contoh ringkas yang menunjukkan penambahan kandungan ke fail yang ada menggunakan FileUtils :
@Test public void whenAppendToFileUsingFiles_thenCorrect() throws IOException { File file = new File(fileName); FileUtils.writeStringToFile( file, "Spain\r\n", StandardCharsets.UTF_8, true); assertThat(StreamUtils.getStringFromInputStream( new FileInputStream(fileName))) .isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n"); }
7. Kesimpulannya
Dalam artikel ini, kami telah melihat bagaimana kami dapat menambahkan kandungan dengan pelbagai cara.
Pelaksanaan penuh tutorial ini boleh didapati di GitHub.