Pengenalan
Pengendalian fail adalah bahagian penting dalam mana-mana bahasa pengaturcaraan. Di Java, pakej java.io dan java.nio menyediakan kelas yang berkuasa untuk membaca dan menulis fail, kedua-dua teks dan binari. Panduan ini merangkumi perkara penting pengendalian fail dalam Java, termasuk contoh, cabaran dan petua untuk membantu anda menguasai topik ini.
1. Membaca dan Menulis Fail Teks
Membaca Fail Teks
Java menyediakan beberapa cara untuk membaca fail teks, tetapi kaedah yang paling biasa dan mudah ialah menggunakan BufferedReader dan FileReader.
Contoh:
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class TextFileReader { public static void main(String[] args) { try (BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } }
Isi Penting:
- BufferedReader membaca teks dengan cekap, baris demi baris.
- Pernyataan cuba-dengan-sumber memastikan sumber ditutup secara automatik.
Menulis Fail Teks
Menulis pada fail teks adalah sama mudahnya menggunakan BufferedWriter dan FileWriter.
Contoh:
import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; public class TextFileWriter { public static void main(String[] args) { try (BufferedWriter writer = new BufferedWriter(new FileWriter("example.txt"))) { writer.write("Hello, World!"); writer.newLine(); writer.write("This is a text file."); } catch (IOException e) { e.printStackTrace(); } } }
Cabaran: Tulis program Java yang membaca fail teks baris demi baris dan mengira bilangan perkataan dalam fail.
2. Membaca dan Menulis Fail Perduaan
Fail binari memerlukan pendekatan berbeza kerana ia tidak boleh dibaca oleh manusia. Kelas FileInputStream dan FileOutputStream Java sesuai untuk membaca dan menulis data binari.
Membaca Fail Binari
Contoh:
import java.io.FileInputStream; import java.io.IOException; public class BinaryFileReader { public static void main(String[] args) { try (FileInputStream inputStream = new FileInputStream("example.dat")) { int byteData; while ((byteData = inputStream.read()) != -1) { System.out.print(byteData + " "); } } catch (IOException e) { e.printStackTrace(); } } }
Isi Penting:
- FileInputStream membaca bait data satu demi satu.
- Berguna untuk fail seperti imej atau objek bersiri.
Menulis Fail Perduaan
Contoh:
import java.io.FileOutputStream; import java.io.IOException; public class BinaryFileWriter { public static void main(String[] args) { try (FileOutputStream outputStream = new FileOutputStream("example.dat")) { outputStream.write(65); // Writes a single byte to the file outputStream.write(new byte[]{66, 67, 68}); // Writes multiple bytes to the file } catch (IOException e) { e.printStackTrace(); } } }
Cabaran: Tulis program yang menyalin fail binari (seperti imej) dari satu lokasi ke lokasi lain.
3. Membaca dari Fail ZIP
Pakej java.util.zip Java membolehkan anda bekerja dengan fail ZIP. Anda boleh mengekstrak fail daripada arkib ZIP menggunakan ZipInputStream.
Contoh:
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; public class ZipFileReader { public static void main(String[] args) { try (ZipInputStream zipStream = new ZipInputStream(new FileInputStream("example.zip"))) { ZipEntry entry; while ((entry = zipStream.getNextEntry()) != null) { System.out.println("Extracting: " + entry.getName()); FileOutputStream outputStream = new FileOutputStream(entry.getName()); byte[] buffer = new byte[1024]; int len; while ((len = zipStream.read(buffer)) > 0) { outputStream.write(buffer, 0, len); } outputStream.close(); zipStream.closeEntry(); } } catch (IOException e) { e.printStackTrace(); } } }
Isi Penting:
- ZipInputStream membaca entri daripada fail ZIP.
- Setiap entri (fail atau direktori) boleh diekstrak menggunakan gelung.
Cabaran: Tulis program Java yang membaca semua fail .txt daripada arkib ZIP dan mencetak kandungannya ke konsol.
4. Menulis ke Fail Pejabat
Java tidak menyokong penulisan pada fail Microsoft Office seperti .docx atau .xlsx secara asli, tetapi perpustakaan seperti Apache POI boleh digunakan untuk tujuan ini.
Menulis ke Fail Excel
Contoh:
import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io.IOException; public class ExcelFileWriter { public static void main(String[] args) { Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Sheet1"); Row row = sheet.createRow(0); Cell cell = row.createCell(0); cell.setCellValue("Hello, Excel!"); try (FileOutputStream outputStream = new FileOutputStream("example.xlsx")) { workbook.write(outputStream); } catch (IOException e) { e.printStackTrace(); } } }
Cabaran: Tulis program Java yang mencipta fail Excel dengan berbilang helaian, setiap satu mengandungi jadual data.
5. Membaca dan Menulis Fail XML
Java menyediakan beberapa cara untuk berfungsi dengan fail XML. Pakej javax.xml.parsers biasanya digunakan untuk ini.
Membaca Fail XML
Contoh:
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import java.io.File; public class XMLFileReader { public static void main(String[] args) { try { File file = new File("example.xml"); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(file); NodeList nodeList = doc.getElementsByTagName("tagname"); for (int i = 0; i <h4> <strong>Menulis pada Fail XML</strong> </h4> <p><strong>Contoh:</strong><br> </p> <pre class="brush:php;toolbar:false">import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.*; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; import java.io.File; public class XMLFileWriter { public static void main(String[] args) { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.newDocument(); Element root = doc.createElement("root"); doc.appendChild(root); Element child = doc.createElement("child"); child.appendChild(doc.createTextNode("Hello, XML!")); root.appendChild(child); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new File("example.xml")); transformer.transform(source, result); } catch (ParserConfigurationException | TransformerException e) { e.printStackTrace(); } } }
Cabaran: Cipta program Java yang membaca fail konfigurasi XML dan mengeluarkan tetapan dalam format yang boleh dibaca manusia.
6. Pengendalian Pengecualian dalam Fail I/O
Apabila bekerja dengan fail, pengecualian adalah perkara biasa disebabkan oleh isu seperti kehilangan fail, ralat kebenaran atau format data yang tidak dijangka. Pengendalian pengecualian yang betul adalah penting untuk program yang mantap.
Pengecualian I/O Biasa
- FileNotFoundException: Berlaku apabila cuba membuka fail yang tidak wujud.
- IOException: Pengecualian umum untuk kegagalan I/O, seperti ralat membaca atau menulis.
Amalan Terbaik:
- Gunakan cuba-dengan-sumber: Ini memastikan fail ditutup dengan betul walaupun pengecualian berlaku.
- Blok Tangkapan Khusus: Kendalikan pengecualian berbeza secara berasingan untuk memberikan mesej ralat yang bermakna.
- Pengelogan: Sentiasa log pengecualian untuk membantu mendiagnosis isu dalam pengeluaran.
Contoh:
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class FileExceptionHandling { public static void main(String[] args) { try (BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { System.err.println("An I/O error occurred: " + e.getMessage()); } } }
Conclusion
File handling in Java is a powerful feature, enabling you to work with various file types, from simple text files to complex XML and binary files. By mastering these techniques, you'll be well-equipped to handle any file-based tasks in your Java applications.
Final Challenge: Combine reading and writing techniques to create a program that reads data from an Excel file, processes it, and then writes the results to a new XML file.
Tips & Tricks:
- Buffering: Always use buffering (BufferedReader, BufferedWriter) for large files to improve performance.
- File Paths: Use Paths and Files classes from java.nio.file for more modern and flexible file handling.
- UTF-8 Encoding: Always specify character encoding when dealing with text files to avoid encoding issues.
Happy coding!
Atas ialah kandungan terperinci Pengendalian Fail dalam Java: Panduan Komprehensif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Java adalah platform-bebas kerana falsafah reka bentuk "Write Once, Run, Run Everywhere", yang bergantung kepada mesin maya Java (JVMS) dan bytecode. 1) Kod Java disusun menjadi bytecode, ditafsirkan oleh JVM atau disusun dengan lalat secara tempatan. 2) Perhatikan kebergantungan perpustakaan, perbezaan prestasi dan konfigurasi persekitaran. 3) Menggunakan perpustakaan standard, ujian silang platform dan pengurusan versi adalah amalan terbaik untuk memastikan kebebasan platform.

Java'splatformindependencenotsimple; itinvolvescomplexities.1) jvmcompatibilitymustbeensuredacrossplatforms.2) nativelibrariesandsystemcallsneedcarefulhandling.3)

Java'splatformindependenceBenefitswebapplicationsbyAllowingCodeToRunonAnySystemWithAjvm, SimplifyDeploymentandscaling.Itenables: 1) EasyDeploymentAcsDifferentservers, 2)

Thejvmistheruntimeenvironmentforexecutingjavabytecode, crucialforjava's "writeonce, runanywhere" keupayaan

JavaremainsatopchoiceFordevelopersDuetoitsplatformindant, Objek-OrientedDesign, StrongTyping, AutomaticMemoryManagement, danComprehensivestandardlibrary.ThesefeatureSmakejavaversatileAndPowerforful

Java'splatformindependencemeansdeveloperscanwritecodeonceandrunitonanydeviceWithoutrecompiling.thisisachievedthroughthejavirtualmachine (jvm), yang tidak dapat diperbaiki

Untuk menyediakan JVM, anda perlu mengikuti langkah -langkah berikut: 1) Muat turun dan pasang JDK, 2) Tetapkan Pembolehubah Alam Sekitar, 3) Sahkan pemasangan, 4) Tetapkan IDE, 5) Uji program pelari. Menyediakan JVM bukan sekadar membuatnya berfungsi, ia juga melibatkan pengoptimuman peruntukan memori, pengumpulan sampah, penalaan prestasi, dan pengendalian ralat untuk memastikan operasi yang optimum.

Toensurejavaplatformindantret, ikuti: 1) compileAndRunyourapplicationonmultiplePlatformsusingdifferentosandjvmversions.2) Utilizeci/cdpipelinesejenkinsorgithubittionsforautomatedcross-platformtesting.3)


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

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Dreamweaver CS6
Alat pembangunan web visual
