Sementara java.io.RandomAccessFile
memang memiliki close()
metode java.io.File
tidak. Mengapa demikian? Apakah file ditutup secara otomatis saat finalisasi atau sesuatu?
Terima kasih!
Sementara java.io.RandomAccessFile
memang memiliki close()
metode java.io.File
tidak. Mengapa demikian? Apakah file ditutup secara otomatis saat finalisasi atau sesuatu?
Terima kasih!
Jawaban:
Javadoc File
kelas mendeskripsikan kelas sebagai:
Representasi abstrak dari nama jalur file dan direktori.
File
hanyalah representasi dari nama path, dengan beberapa metode yang berhubungan dengan filesystem (seperti exists()
) dan penanganan direktori tetapi streaming input dan output dilakukan di tempat lain. Aliran dapat dibuka dan ditutup, file tidak bisa.
(Pendapat pribadi saya adalah agak disayangkan bahwa Sun kemudian menciptakan RandomAccessFile
, menyebabkan banyak kebingungan dengan penamaan yang tidak konsisten.)
java.io.File
tidak mewakili file yang terbuka , ini mewakili jalur di sistem file. Oleh karena itu, memiliki close
metode di atasnya tidak masuk akal.
Sebenarnya, kelas ini salah dinamai oleh penulis perpustakaan, seharusnya disebut seperti Path
.
Path
sepenuhnya.
Pada dasarnya file akses acak membungkus aliran input dan output untuk mengelola akses acak. Anda tidak membuka dan menutup file, Anda membuka dan menutup aliran ke file.
BufferedReader dapat dibuka dan ditutup tetapi File tidak pernah dibuka, ini hanya mewakili jalur dalam sistem file.
Misalkan, Anda punya
File f = new File("SomeFile");
f.length();
Anda tidak perlu menutup File
s, karena ini hanya representasi dari sebuah jalur.
Anda harus selalu mempertimbangkan untuk menutup hanya pembaca / penulis dan aliran fakta.