JavaRush /Java Blog /Random-ID /Rehat kopi #229. Cara bekerja dengan file dan Input/Outpu...

Rehat kopi #229. Cara bekerja dengan file dan Input/Output di Java. Metode utilitas kelas Objek

Dipublikasikan di grup Random-ID

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 . Rehat kopi #229.  Cara bekerja dengan file dan Input/Output di Java.  Metode utilitas kelas Objek - 1

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);//NPE
Objects.equals(nullValue, billy);// false
Objects.equals(billy, nicolai);// false
Objects.equals(billy, copyOfbilly);// true

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);// false
Objects.deepEquals(raceTimes1, raceTimes2);// true

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());//-1
Objects.compare(null, nicolai, new RaceTimeComparator());//NPE

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);//RaceTime[runnerName=Billy Korando, time=PT1M30S]
Objects.toString(nullValue);//null
Objects.toString(nullValue, "Did not finish");//Did not finish
Objects.toIdentityString(billy);//ObjectsExamples$1RaceTime@251a69d7

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);//0
Objects.hashCode(billy);//[HashValue]
Objects.hash(billy, nicolai);//[HashValue]

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);//false
Objects.isNull(nullValue);//true

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)
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION