


Bagaimana untuk menyelesaikan pengecualian membaca fail besar Java (LargeFileReadException)
Cara menyelesaikan pengecualian pembacaan fail besar Java (LargeFileReadException)
Ikhtisar:
Dalam pembangunan Java harian, kita selalunya perlu mengendalikan operasi membaca fail yang besar. Walau bagaimanapun, disebabkan oleh had memori dan had saiz fail, anda mungkin menghadapi Java LargeFileReadException. Artikel ini menerangkan beberapa cara untuk menyelesaikan masalah ini, bersama-sama dengan contoh kod.
Kaedah 1: Bacaan disekat
Bacaan disekat ialah kaedah yang biasa digunakan untuk menyelesaikan pengecualian bacaan fail besar. Dengan membaca dalam ketulan, kita boleh membahagikan fail besar kepada berbilang ketulan kecil untuk dibaca, sekali gus mengelakkan masalah limpahan ingatan. Berikut ialah contoh kod:
public class LargeFileReader { private static final int BUFFER_SIZE = 8192; public static void readFile(String filePath) { try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) { char[] buffer = new char[BUFFER_SIZE]; int bytesRead; while ((bytesRead = reader.read(buffer, 0, BUFFER_SIZE)) != -1) { processBuffer(buffer, bytesRead); } } catch (IOException e) { e.printStackTrace(); } } private static void processBuffer(char[] buffer, int bytesRead) { // 处理读取到的数据 // TODO: 这里可以根据实际需求进行处理 } }
Dalam kod di atas, kami menggunakan penimbal saiz tetap (BUFFER_SIZE), membaca sekeping data bait daripada fail setiap kali dan menghantarnya kepada kaedah processBuffer sebagai tatasusunan aksara dengan. Dengan cara ini, tanpa mengira saiz fail, kami boleh memastikan bahawa penggunaan memori dikawal dalam julat yang boleh diterima.
Kaedah 2: Gunakan fail dipetakan memori
Fail dipetakan memori ialah cara yang cekap untuk memproses fail besar. Ia menggunakan mekanisme pemetaan fail sistem pengendalian untuk memetakan sebahagian atau semua kandungan fail ke dalam ingatan, dengan itu membolehkan pembacaan pantas dan operasi fail. Berikut ialah contoh kod:
public class LargeFileReader { public static void readFile(String filePath) { try (FileChannel channel = new RandomAccessFile(filePath, "r").getChannel()) { long fileSize = channel.size(); MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, 0, fileSize); byte[] byteBuffer = new byte[(int) fileSize]; buffer.get(byteBuffer); processBuffer(byteBuffer); } catch (IOException e) { e.printStackTrace(); } } private static void processBuffer(byte[] buffer) { // 处理读取到的数据 // TODO: 这里可以根据实际需求进行处理 } }
Dalam kod di atas, kami telah menggunakan kaedah peta kelas FileChannel untuk memetakan kandungan fail ke dalam ingatan. Kami kemudiannya boleh mencipta tatasusunan bait berdasarkan saiz fail, membaca kandungan fail yang dipetakan memori ke dalam tatasusunan bait, dan menyerahkannya kepada kaedah processBuffer untuk diproses.
Kaedah 3: Gunakan perpustakaan pihak ketiga
Selain mengendalikan pengecualian pembacaan fail besar secara manual, anda juga boleh menggunakan beberapa perpustakaan pihak ketiga sumber terbuka, yang menyediakan cara yang lebih mudah dan cekap untuk membaca fail besar. Berikut ialah contoh kod untuk membaca fail besar menggunakan perpustakaan Apache Commons IO:
import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; public class LargeFileReader { public static void readFile(String filePath) { try { String fileContent = FileUtils.readFileToString(new File(filePath), StandardCharsets.UTF_8); processBuffer(fileContent); } catch (IOException e) { e.printStackTrace(); } } private static void processBuffer(String buffer) { // 处理读取到的数据 // TODO: 这里可以根据实际需求进行处理 } }
Dalam kod di atas, kami telah menggunakan kelas FileUtils pustaka Apache Commons IO untuk membaca kandungan fail dan menukarnya kepada jenis rentetan. Dengan cara ini, kami boleh memproses data jenis rentetan secara langsung tanpa memerlukan penukaran tatasusunan bait atau aksara.
Ringkasan:
Dengan membaca dalam ketulan, menggunakan fail yang dipetakan memori atau menggunakan perpustakaan pihak ketiga, kami boleh menyelesaikan masalah pengecualian bacaan fail besar Java (LargeFileReadException) dengan berkesan. Memilih penyelesaian yang betul bergantung pada senario dan keperluan aplikasi tertentu. Semoga kaedah dan contoh kod yang disediakan dalam artikel ini akan membantu anda mengendalikan operasi membaca fail besar dengan lebih baik.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan pengecualian membaca fail besar Java (LargeFileReadException). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Panduan Nombor Sempurna di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor Perfect dalam Java?, contoh dengan pelaksanaan kod.

Panduan untuk Penjana Nombor Rawak di Jawa. Di sini kita membincangkan Fungsi dalam Java dengan contoh dan dua Penjana berbeza dengan contoh lain.

Panduan untuk Weka di Jawa. Di sini kita membincangkan Pengenalan, cara menggunakan weka java, jenis platform, dan kelebihan dengan contoh.

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

Panduan untuk TimeStamp to Date di Java. Di sini kita juga membincangkan pengenalan dan cara menukar cap waktu kepada tarikh dalam java bersama-sama dengan contoh.

Kapsul adalah angka geometri tiga dimensi, terdiri daripada silinder dan hemisfera di kedua-dua hujungnya. Jumlah kapsul boleh dikira dengan menambahkan isipadu silinder dan jumlah hemisfera di kedua -dua hujungnya. Tutorial ini akan membincangkan cara mengira jumlah kapsul yang diberikan dalam Java menggunakan kaedah yang berbeza. Formula volum kapsul Formula untuk jumlah kapsul adalah seperti berikut: Kelantangan kapsul = isipadu isipadu silinder Dua jumlah hemisfera dalam, R: Radius hemisfera. H: Ketinggian silinder (tidak termasuk hemisfera). Contoh 1 masukkan Jejari = 5 unit Ketinggian = 10 unit Output Jilid = 1570.8 Unit padu menjelaskan Kirakan kelantangan menggunakan formula: Kelantangan = π × r2 × h (4
