Carane nggarap file lan Input/Output ing Jawa
Sumber:
Sedheng Tutorial iki nerangake carane nggawe, maca, nulis lan mbusak file ing Jawa. Sampeyan uga bakal sinau carane kelas File , InputStream , lan OutputStream bisa digunakake .
Pambuka
Ing Jawa, file diwakili dening kelas
File . Kelas
File nyedhiyakake cara kanggo nggawe, maca, nulis, lan mbusak file. Input/output (I/O) yaiku proses transfer data antarane program lan sumber eksternal, kayata file, soket jaringan, utawa konsol. Jawa nyedhiyakake akeh kelas kanggo input/output, kalebu kelas
InputStream lan
OutputStream .
Nggawe file
Kanggo nggawe file, sampeyan bisa nggunakake cara
File.createNewFile () . Bakal nggawe file anyar yen file kanthi jeneng sing padha durung ana. Yen file kasebut wis ana, metode
createNewFile () bakal mbuwang
IOException . Punika conto carane nggawe file anyar disebut
myfile.txt ing direktori saiki:
File myFile = new File("myfile.txt");
myFile.createNewFile();
Maca file
Kanggo maca file ing Jawa, sampeyan bisa nggunakake kelas
FileInputStream . Iki menehi cara kanggo maca bita saka file. Kanggo maca isi file, sampeyan kudu nggunakake cara
maca () . Cara iki maca siji bait saka file lan ngasilake nilai bait kasebut. Contone, kode ing ngisor iki maca isi file
myfile.txt lan nyithak menyang console:
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();
Ngrekam file
Kanggo nulis menyang file, sampeyan bisa nggunakake kelas
FileOutputStream . Iki menehi cara kanggo nulis bita menyang file. Kanggo nulis isi string menyang file, gunakake metode
write() . Cara iki nulis jumlah bita sing ditemtokake saka array sing ditemtokake menyang file. Punika conto carane senar "Hello, donya!"Ditulis. menyang file
myfile.txt :
File myFile = new File("myfile.txt");
FileOutputStream outputStream = new FileOutputStream(myFile);
byte[] buffer = "Hello, world!".getBytes();
outputStream.write(buffer);
outputStream.close();
Mbusak file
Kanggo mbusak file ing Jawa, sampeyan kudu nggunakake
File.delete () cara . Yen file sing pengin dibusak ora ana, banjur
delete() cara bakal bali
false . Punika conto kode sing mbusak file
myfile.txt :
File myFile = new File("myfile.txt");
myFile.delete();
Kesimpulan
Ing kirim iki, kita ngrembug babagan dhasar nggarap file lan I/O Java. Sampeyan sinau carane nggawe, maca, nulis, lan mbusak file. Sampeyan uga sinau babagan kelas
File lan kelas
InputStream lan
OutputStream .
Metode Utilitas kelas Obyek - cara kerjane
Sumber:
Ing Jawa Kanthi kiriman iki, sampeyan bakal nambah kawruh babagan macem-macem metode sing kasedhiya ing kelas Obyek . Kelas
Obyek ing Jawa nduweni akeh cara utilitas sing ndadekake gampang nindakake macem-macem operasi ing obyek.
Kelas Obyek wis ngalami sawetara nganyari ing rilis JDK : ana nganyari banget pinunjul ing JDK 8 lan 9, lan nganyari suntingan ing JDK 16 lan 19. Ayo kang katon ing carane sampeyan bisa nggunakake kelas
Obyek .
Perbandingan obyek
Obyek nyedhiyakake sawetara opsi kanggo mbandhingake nilai saka rong obyek. Mupangat utama nggunakake implementasi
Objects yaiku safety saka kedadeyan
sing ora ana gunane .
padha ()
Ing ngisor iki minangka conto mbandhingake rong rekaman.
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);
deepEquals()
Ing kelas
Obyek , sampeyan uga bisa nggunakake deepEquals () kanggo mbandhingaké loro array . Ora kaya
padha karo biasa () , iki bakal mbandhingake nilai sing disimpen ing array, sing kudu ngasilake asil sing luwih konsisten. Sejatine cara iki liwat
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);
mbandhingake ()
Obyek uga nduweni metode
mbandhingake () , sing bisa njupuk rong obyek lan
Comparator<T> . Cara
mbandhingake () minangka salah siji saka sawetara metode
null -unsafe ing Obyek amarga ora ana bali sing bisa ditampa yen salah sijine argumen kasebut
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 lan HashCode
Kelas Obyek nyedhiyakake cara kanggo ngowahi obyek dadi nilai String lan HashCode . Maneh, kauntungan utama saka metode kasebut yaiku aman saka kedadeyan null .
Ngonversi menyang String
Salah siji cara sing luwih menarik yaiku
toString(obj, nullDefault) , sing menehi nilai standar yen ana kesalahan. Iki tegese
toIdentityString (obj) ngasilake
toString () lan
hashCode () saka obyek sing dilewati kaya-kaya ora ana cara kasebut ditindih.
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);
Ngonversi menyang HashCode
Obyek uga menehi cara kanggo ngowahi obyek menyang nilai kode hash.
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);
Priksa null
Kelas
Obyek nyedhiyakake sawetara cara kanggo mriksa lan nangani
null .
Mbuwang NullPointException ing null
Metode
requireNonNull(obj) bakal mbuwang
NullPointException yen nilai liwati
null .
record RaceTime(String runnerName, Duration time) {
RaceTime{
runnerName = Objects.requireNonNull(runnerName);
time = Objects.requireNonNull(time);
}
}
Mbuwang NullPointException ing null karo pesen kanggo pangguna
Metode
requireNonNull(obj, String) bakal mbuwang kesalahan
NullPointException kanthi pesen menyang pangguna yen nilai kasebut
null .
record RaceTime(String runnerName, Duration time) {
RaceTime{
runnerName = Objects.requireNonNull(runnerName, "runner name required!");
time = Objects.requireNonNull(time, "race time required!");
}
}
Bali nilai standar kanggo null
Metode
requireNonNullElse(obj, defaultValue) bakal ngasilake
defaultValue sing dilewati yen
obj null .
record RaceTime(String runnerName, Duration time) {
RaceTime{
runnerName = Objects.requireNonNullElse(runnerName, "John Smith");
time = Objects.requireNonNullElse(time, Duration.ZERO);
}
}
Nggunakake Suppliers
Kelas
Obyek uga nyedhiyakake metode
requireNonNull(obj, Supplier<String>) lan
T requireNonNullElseGet(T, Supplier<T>) , sing bisa digunakake kanggo menehi pesen utawa nilai standar. Iki mung kudu digunakake yen nggawe pesen utawa nilai standar bakal duwe pengaruh kinerja sing 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);
}
}
Priksa null prediktif
Obyek nyedhiyakake mriksa
null kanggo digunakake ing predikat, sanajan bisa uga digunakake ing skenario liyane.
record RaceTime(String runnerName, Duration time) {}
RaceTime nullValue = null;
Objects.nonNull(nullValue);
Objects.isNull(nullValue);
Priksa indeks
Pungkasan, kelas
Obyek nyedhiyakake sawetara opsi kanggo mriksa posisi indeks nalika ngliwati
File ,
String ,
Koleksi , utawa obyek sing padha. Sawetara cara iki bubar ditambahake menyang 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