Sementara java.io.RandomAccessFilememang memiliki close()metode java.io.Filetidak. Mengapa demikian? Apakah file ditutup secara otomatis saat finalisasi atau sesuatu?
Terima kasih!
Sementara java.io.RandomAccessFilememang memiliki close()metode java.io.Filetidak. Mengapa demikian? Apakah file ditutup secara otomatis saat finalisasi atau sesuatu?
Terima kasih!
Jawaban:
Javadoc Filekelas 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.Filetidak mewakili file yang terbuka , ini mewakili jalur di sistem file. Oleh karena itu, memiliki closemetode di atasnya tidak masuk akal.
Sebenarnya, kelas ini salah dinamai oleh penulis perpustakaan, seharusnya disebut seperti Path.
Pathsepenuhnya.
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.