Saya memiliki fungsi yang menerima File sebagai argumen. Saya tidak ingin membuat / menulis File baru (saya tidak memiliki akses tulis ke sistem file) untuk meneruskan data string saya ke fungsi. Saya harus menambahkan bahwa data String tidak ada dalam file (jadi saya tidak dapat membaca data saya dari file).
Dapatkah saya menggunakan Stream dan "mentransmisikan" ke objek File?
File
objek? Seperti jawaban yang telah dinyatakan,File
objek seperti referensi ke lokasi di sistem file, dan akan sulit untuk disimulasikan tanpa file yang sebenarnya. Namun, jika fungsi Anda menggunakan aFileReader
atau aFileInputStream
, Anda dapat dengan mudah mengubah kode untuk menerima input non-file.Jawaban:
Tidak; instance kelas
File
mewakili jalur dalam sistem file. Oleh karena itu, Anda hanya dapat menggunakan fungsi itu dengan file. Tapi mungkin ada kelebihan beban yang dibutuhkanInputStream
bukan?sumber
Biasanya ketika suatu metode menerima file, ada metode lain di dekatnya yang menerima aliran. Jika bukan ini masalahnya, API dikodekan dengan buruk. Jika tidak, Anda dapat menggunakan file sementara, di mana izin biasanya diberikan dalam banyak kasus. Jika itu applet, Anda dapat meminta izin menulis .
Sebuah contoh:
sumber
Sebuah file objek dalam Java adalah representasi dari jalan ke direktori atau file, bukan file itu sendiri. Anda tidak perlu memiliki akses tulis ke sistem file untuk membuat
File
objek, Anda hanya memerlukannya jika Anda bermaksud untuk benar-benar menulis ke file (menggunakan FileOutputStream misalnya)sumber
The
File
kelas mewakili "ide" dari file, bukan pegangan sebenarnya untuk digunakan untuk I / O. Inilah mengapaFile
kelas memiliki file.exists()
metode, untuk memberi tahu Anda jika file tersebut ada atau tidak. (Bagaimana Anda bisa memilikiFile
objek yang tidak ada?)Sebaliknya, membuat a
new FileInputStream(new File("/my/file"))
memberi Anda aliran aktual untuk membaca byte.sumber
Gunakan pembaca file, muat file, lalu tulis isinya ke buffer string.
contoh
Tautan di atas menunjukkan kepada Anda contoh bagaimana mencapai ini. Seperti posting lain untuk jawaban ini mengatakan untuk memuat file ke dalam memori Anda tidak memerlukan akses tulis selama Anda tidak berencana membuat perubahan pada file sebenarnya.
sumber