Di Jawa, saya memiliki teks dari bidang teks dalam variabel String yang disebut "teks".
Bagaimana saya bisa menyimpan konten variabel "teks" ke file?
sumber
Di Jawa, saya memiliki teks dari bidang teks dalam variabel String yang disebut "teks".
Bagaimana saya bisa menyimpan konten variabel "teks" ke file?
Jika Anda hanya menghasilkan teks, daripada data biner apa pun, yang berikut ini akan berfungsi:
PrintWriter out = new PrintWriter("filename.txt");
Kemudian, tulis String Anda ke sana, sama seperti yang Anda lakukan pada aliran output apa pun:
out.println(text);
Anda akan memerlukan penanganan pengecualian, seperti biasa. Pastikan untuk menelepon out.close()
saat Anda selesai menulis.
Jika Anda menggunakan Java 7 atau lebih baru, Anda dapat menggunakan "pernyataan try-with-resources " yang akan secara otomatis menutup Anda PrintStream
ketika Anda selesai menggunakannya (mis. Keluar dari blok) seperti:
try (PrintWriter out = new PrintWriter("filename.txt")) {
out.println(text);
}
Anda masih harus melempar secara eksplisit java.io.FileNotFoundException
seperti sebelumnya.
Apache Commons IO berisi beberapa metode hebat untuk melakukan ini, khususnya FileUtils berisi metode berikut:
yang memungkinkan Anda untuk menulis teks ke file dalam satu panggilan metode:
Anda mungkin juga ingin mempertimbangkan untuk menentukan penyandian file.
sumber
FileUtils.writeStringToFile(new File("test.txt"), "Hello File", forName("UTF-8"));
Lihatlah Java File API
contoh cepat:
sumber
@Cleanup new FileOutputStream(...)
dan Anda sudah selesai.Di Java 7 Anda dapat melakukan ini:
Ada info lebih lanjut di sini: http://www.drdobbs.com/jvm/java-se-7-new-file-io/231600403
sumber
content.getBytes(StandardCharsets.UTF_8)
dapat digunakan untuk secara eksplisit mendefinisikan pengkodean.Baru saja melakukan hal serupa di proyek saya. Gunakan FileWriter akan menyederhanakan bagian dari pekerjaan Anda. Dan di sini Anda dapat menemukan tutorial yang bagus .
sumber
.close()
tidak melempar (setidaknya di Java 7?), Apakah trycatch terakhir mungkin berlebihan?throw new RuntimeException(e);
Gunakan
FileUtils.writeStringToFile()
dari Apache Commons IO . Tidak perlu menemukan kembali roda khusus ini.sumber
Anda dapat menggunakan modifikasi kode di bawah ini untuk menulis file Anda dari kelas atau fungsi apa pun yang menangani teks. Orang bertanya-tanya mengapa dunia membutuhkan editor teks baru ...
sumber
Dalam Java 11 yang
java.nio.file.Files
kelas diperpanjang dengan dua metode utilitas baru untuk menulis string ke dalam file. Metode pertama (lihat JavaDoc di sini ) menggunakan charset UTF-8 sebagai default:Dan metode kedua (lihat JavaDoc di sini ) memungkinkan untuk menentukan charset individual:
Kedua metode memiliki parameter Varargs opsional untuk mengatur opsi penanganan file (lihat JavaDoc di sini ). Contoh berikut akan membuat file yang tidak ada atau menambahkan string ke yang sudah ada:
sumber
Saya lebih suka mengandalkan perpustakaan bila memungkinkan untuk operasi semacam ini. Ini membuat saya cenderung tidak sengaja menghilangkan langkah penting (seperti kesalahan yang dilakukan oleh wolfsnipes di atas). Beberapa perpustakaan disarankan di atas, tetapi favorit saya untuk hal semacam ini adalah Google Guava . Guava memiliki kelas yang disebut File yang berfungsi dengan baik untuk tugas ini:
sumber
Charsets.UTF-8
.Charsets.UTF_8
SebenarnyaFiles.asCharSink(file, charset).write(text)
Gunakan api Apache Commons IO. Itu mudah
Gunakan API sebagai
Ketergantungan Maven
sumber
Jika Anda perlu membuat file teks berdasarkan satu string tunggal:
sumber
Gunakan ini, sangat mudah dibaca:
sumber
Anda dapat memasukkan metode ini ke dalam kelas Anda. Jika Anda menggunakan metode ini di kelas dengan metode utama, ubah kelas ini menjadi statis dengan menambahkan kata kunci statis. Apa pun caranya, Anda perlu mengimpor java.io. * untuk membuatnya berfungsi jika tidak, File, FileWriter dan BufferedWriter tidak akan dikenali.
sumber
Anda bisa melakukan ini:
sumber
Menggunakan
Java 7
:sumber
Files.write(targetPath, bytes);
untuk menimpa file itu. Ini akan berfungsi seperti yang diharapkan.Menggunakan org.apache.commons.io.FileUtils:
sumber
Jika Anda hanya ingin mendorong satu blok teks ke file, ini akan menimpa setiap kali.
Contoh ini memungkinkan pengguna untuk memilih file menggunakan pemilih file.
sumber
Lebih baik untuk menutup penulis / keluaran di blok akhirnya, kalau-kalau terjadi sesuatu
sumber
}
sumber
Saya pikir cara terbaik menggunakan
Files.write(Path path, Iterable<? extends CharSequence> lines, OpenOption... options)
:Lihat javadoc :
Tolong dicatat. Saya melihat orang-orang sudah menjawab dengan built-in Java
Files.write
, tetapi apa yang istimewa dalam jawaban saya yang tampaknya tidak ada yang menyebutkan adalah versi overload dari metode yang mengambil Iterable dari CharSequence (yaitu String), bukanbyte[]
array, sehinggatext.getBytes()
tidak diperlukan , yang agak bersih menurut saya.sumber
Jika Anda ingin menjaga karakter carriage return dari string ke dalam file di sini adalah contoh kode:
sumber
Cara saya didasarkan pada streaming karena berjalan di semua versi Android dan kebutuhan sumber daya fecthing seperti URL / URI, ada saran dipersilahkan.
Sejauh yang terkait, stream (InputStream dan OutputStream) mentransfer data biner, ketika pengembang menulis string ke stream, pertama-tama harus mengubahnya menjadi byte, atau dengan kata lain menyandikannya.
sumber
Anda dapat menggunakan ArrayList untuk meletakkan semua isi TextArea sebagai contoh, dan mengirim sebagai parameter dengan memanggil save, karena penulis hanya menulis baris string, maka kita menggunakan baris "untuk" baris demi baris untuk menulis ArrayList pada akhirnya kami akan konten TextArea dalam file txt. jika ada yang tidak masuk akal, saya minta maaf adalah penerjemah google dan saya yang tidak bisa berbahasa inggris.
Tonton Notepad Windows, itu tidak selalu lompat garis, dan menunjukkan semua dalam satu baris, gunakan Wordpad ok.
sumber