Cara bekerja dengan file dan Input/Output di Java
Sumber:
Medium Tutorial ini menjelaskan cara membuat, membaca, menulis dan menghapus file di Java. Anda juga akan mempelajari cara kerja kelas File , InputStream , dan OutputStream .
Perkenalan
Di Java, file diwakili oleh kelas
File . Kelas
File menyediakan metode untuk membuat, membaca, menulis, dan menghapus file. Input/output (I/O) adalah proses transfer data antara program dan sumber eksternal, seperti file, soket jaringan, atau konsol. Java menyediakan banyak kelas untuk input/output, termasuk kelas
InputStream dan
OutputStream .
Membuat file
Untuk membuat file, Anda dapat menggunakan metode
File.createNewFile() . Ini akan membuat file baru jika file dengan nama yang sama belum ada. Jika file tersebut sudah ada, metode
createNewFile() akan memunculkan
IOException . Berikut ini contoh cara membuat file baru bernama
myfile.txt di direktori saat ini:
File myFile = new File("myfile.txt");
myFile.createNewFile();
Membaca file
Untuk membaca file di Java, Anda dapat menggunakan kelas
FileInputStream . Ini menyediakan metode untuk membaca byte dari suatu file. Untuk membaca isi suatu file, Anda harus menggunakan metode
read() . Metode ini membaca satu byte dari file dan mengembalikan nilai byte tersebut. Misalnya, kode berikut membaca isi file
myfile.txt dan mencetaknya ke konsol:
File myFile = new File("myfile.txt");
FileInputStream inputStream = new FileInputStream(myFile);
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
System.out.print(new String(buffer, 0, bytesRead));
}
inputStream.close();
Merekam file
Untuk menulis ke file, Anda dapat menggunakan kelas
FileOutputStream . Ini menyediakan metode untuk menulis byte ke file. Untuk menulis konten string ke file, gunakan metode
write() . Metode ini menulis jumlah byte tertentu dari array tertentu ke file. Berikut adalah contoh bagaimana string “Halo, dunia!” ditulis. ke file
myfile.txt :
File myFile = new File("myfile.txt");
FileOutputStream outputStream = new FileOutputStream(myFile);
byte[] buffer = "Hello, world!".getBytes();
outputStream.write(buffer);
outputStream.close();
Menghapus file
Untuk menghapus file di Java, Anda harus menggunakan metode
File.delete() . Jika file yang ingin Anda hapus tidak ada, maka metode
delete() akan mengembalikan
false . Berikut ini contoh kode untuk menghapus file
myfile.txt :
File myFile = new File("myfile.txt");
myFile.delete();
Kesimpulan
Dalam postingan ini, kita membahas dasar-dasar bekerja dengan file dan I/O Java. Anda mempelajari cara membuat, membaca, menulis, dan menghapus file. Anda juga mempelajari tentang kelas
File serta kelas
InputStream dan
OutputStream .
Metode utilitas kelas Objek - cara bekerja dengannya
Sumber:
Inside Java Dengan postingan ini, Anda akan meningkatkan pengetahuan Anda tentang berbagai metode yang disediakan di kelas Objects . Kelas
Objects di Java memiliki banyak metode utilitas yang memudahkan untuk melakukan berbagai operasi pada objek.
Kelas Objects telah mengalami beberapa pembaruan dalam rilis JDK : ada pembaruan yang sangat signifikan di JDK 8 dan 9, dan pembaruan kecil di JDK 16 dan 19. Mari kita lihat bagaimana Anda dapat menggunakan kelas
Objects .
Perbandingan objek
Objek menyediakan beberapa opsi untuk membandingkan nilai dua objek. Manfaat utama menggunakan implementasi
Objects adalah keamanan terhadap kejadian
null .
sama dengan()
Di bawah ini adalah contoh membandingkan dua catatan.
record RaceTime(String runnerName, Duration time) {}
RaceTime nullValue = null;
RaceTime billy =
new RaceTime("Billy Korando", Duration.of(90, ChronoUnit.SECONDS));
RaceTime copyOfbilly =
new RaceTime("Billy Korando", Duration.of(90, ChronoUnit.SECONDS));
RaceTime nicolai =
new RaceTime("Nicolai Parlog", Duration.of(180, ChronoUnit.SECONDS));
nullValue.equals(billy);
Objects.equals(nullValue, billy);
Objects.equals(billy, nicolai);
Objects.equals(billy, copyOfbilly);
samadalam()
Di kelas
Objects , Anda juga bisa menggunakan deepEquals() untuk membandingkan dua array .
Berbeda dengan equal() biasa , ini akan membandingkan nilai yang disimpan dalam array, yang akan menghasilkan hasil yang lebih konsisten. Pada dasarnya metode ini melewati
Arrays.deepEquals() .
record RaceTime(String runnerName, Duration time) {}
RaceTime billy =
new RaceTime("Billy Korando", Duration.of(90, ChronoUnit.SECONDS));
RaceTime nicolai =
new RaceTime("Nicolai Parlog", Duration.of(180, ChronoUnit.SECONDS));
RaceTime[] raceTimes1 = new RaceTime[] { billy, nicolai };
RaceTime[] raceTimes2 = new RaceTime[] { billy, nicolai };
Objects.equals(raceTimes1, raceTimes2);
Objects.deepEquals(raceTimes1, raceTimes2);
membandingkan()
Objek juga memiliki metode
bandingkan() , yang dapat mengambil dua objek dan
Comparator<T> . Metode
bandingkan() adalah salah satu dari sedikit metode
null -tidak aman di
Objects karena metode ini tidak memiliki pengembalian yang dapat diterima jika salah satu argumennya adalah
null .
record RaceTime(String runnerName, Duration time) {}
class RaceTimeComparator implements Comparator<RaceTime> {
@Override
public int compare(RaceTime o1, RaceTime o2) {
return o1.time.compareTo(o2.time);
}
}
RaceTime billy =
new RaceTime("Billy Korando", Duration.of(90, ChronoUnit.SECONDS));
RaceTime nicolai =
new RaceTime("Nicolai Parlog", Duration.of(180, ChronoUnit.SECONDS));
Objects.compare(billy, nicolai, new RaceTimeComparator());
Objects.compare(null, nicolai, new RaceTimeComparator());
String dan Kode Hash
Kelas Objects menyediakan metode untuk mengonversi objek menjadi nilai String dan HashCode . Sekali lagi, keuntungan utama metode ini adalah aman dari kejadian null .
Konversikan ke String
Salah satu metode yang lebih menarik adalah
toString(obj, nullDefault) , yang memberikan nilai default jika terjadi kesalahan. Artinya
toIdentityString(obj) mengembalikan
toString() dan
hashCode() dari objek yang diteruskan seolah-olah tidak satu pun dari metode ini yang ditimpa.
record RaceTime(String runnerName, Duration time) {}
RaceTime nullValue = null;
RaceTime billy =
new RaceTime("Billy Korando", Duration.of(90, ChronoUnit.SECONDS));
RaceTime nicolai =
new RaceTime("Nicolai Parlog", Duration.of(180, ChronoUnit.SECONDS));
Objects.toString(billy);
Objects.toString(nullValue);
Objects.toString(nullValue, "Did not finish");
Objects.toIdentityString(billy);
Konversikan ke HashCode
Objek juga menyediakan metode untuk mengonversi objek menjadi nilai kode hashnya.
record RaceTime(String runnerName, Duration time) {}
RaceTime nullValue = null;
RaceTime billy =
new RaceTime("Billy Korando", Duration.of(90, ChronoUnit.SECONDS));
RaceTime nicolai =
new RaceTime("Nicolai Parlog", Duration.of(180, ChronoUnit.SECONDS));
Objects.hashCode(nullValue);
Objects.hashCode(billy);
Objects.hash(billy, nicolai);
Memeriksa nol
Kelas
Objects menyediakan beberapa metode untuk memeriksa dan menangani
null .
Melempar NullPointException pada null
Metode
requireNonNull(obj) akan memunculkan
NullPointException jika nilai yang diteruskan adalah
null .
record RaceTime(String runnerName, Duration time) {
RaceTime{
runnerName = Objects.requireNonNull(runnerName);
time = Objects.requireNonNull(time);
}
}
Melempar NullPointException pada null dengan pesan kepada pengguna
Metode
requireNonNull(obj, String) akan memunculkan kesalahan
NullPointException dengan pesan kepada pengguna jika nilai yang diteruskan adalah
null .
record RaceTime(String runnerName, Duration time) {
RaceTime{
runnerName = Objects.requireNonNull(runnerName, "runner name required!");
time = Objects.requireNonNull(time, "race time required!");
}
}
Kembalikan nilai default untuk null
Metode
requireNonNullElse(obj, defaultValue) akan mengembalikan
defaultValue yang diteruskan jika
obj adalah
null .
record RaceTime(String runnerName, Duration time) {
RaceTime{
runnerName = Objects.requireNonNullElse(runnerName, "John Smith");
time = Objects.requireNonNullElse(time, Duration.ZERO);
}
}
Menggunakan Pemasok
Kelas
Objects juga menyediakan metode
requireNonNull(obj, Supplier<String>) dan
T requireNonNullElseGet(T, Supplier<T>) , yang dapat digunakan untuk memberikan pesan atau nilai default. Mereka hanya boleh digunakan jika membuat pesan atau nilai default akan mempunyai dampak kinerja yang signifikan.
record RaceTime(String runnerName, Duration time) {
static Supplier<String> noNameMsgSupplier = () -> "runner name required!";
static Supplier<String> noTimeMsgSupplier = () -> "race time required!";
RaceTime{
runnerName = Objects.requireNonNull(runnerName, noNameMsgSupplier);
time = Objects.requireNonNull(time, noTimeMsgSupplier);
}
}
record RaceTime(String runnerName, Duration time) {
static Supplier<String> noNameValueSupplier = () -> "John Smith";
static Supplier<Duration> noTimeValueSupplier = () -> Duration.ZERO;
RaceTime{
runnerName = Objects.requireNonNullElseGet(runnerName, noNameValueSupplier);
time = Objects.requireNonNullElseGet(time, noTimeValueSupplier);
}
}
Pemeriksaan nol prediktif
Objek menyediakan pemeriksaan
nol untuk digunakan dalam predikat, meskipun dapat digunakan dalam skenario lain juga.
record RaceTime(String runnerName, Duration time) {}
RaceTime nullValue = null;
Objects.nonNull(nullValue);
Objects.isNull(nullValue);
Pemeriksaan indeks
Terakhir, kelas
Objects menyediakan beberapa opsi untuk memeriksa posisi indeks saat melintasi
File ,
String ,
Collection , atau objek serupa. Beberapa metode ini baru-baru ini ditambahkan ke JDK 16.
int checkIndex(int index, int length)
int checkFromToIndex(int fromIndex, int toIndex, int length)
int checkFromIndexSize(int fromIndex, int size, int length)
long checkIndex(long index, long length)
long checkFromToIndex(long fromIndex, long toIndex, long length)
long checkFromIndexSize(long fromIndex, long size, long length)
GO TO FULL VERSION