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.
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:
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.
Fail binari memerlukan pendekatan berbeza kerana ia tidak boleh dibaca oleh manusia. Kelas FileInputStream dan FileOutputStream Java sesuai untuk membaca dan menulis data 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:
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.
Pakej java.util.zip Java membolehkan anda bekerja dengan fail ZIP. Anda boleh mengekstrak fail daripada arkib ZIP menggunakan ZipInputStream.
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:
Cabaran: Tulis program Java yang membaca semua fail .txt daripada arkib ZIP dan mencetak kandungannya ke konsol.
Java tidak menyokong penulisan pada fail Microsoft Office seperti .docx atau .xlsx secara asli, tetapi perpustakaan seperti Apache POI boleh digunakan untuk tujuan ini.
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.
Java menyediakan beberapa cara untuk berfungsi dengan fail XML. Pakej javax.xml.parsers biasanya digunakan untuk ini.
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 < nodeList.getLength(); i++) { System.out.println(nodeList.item(i).getTextContent()); } } catch (Exception e) { e.printStackTrace(); } } }
Contoh:
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.
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.
Amalan Terbaik:
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()); } } }
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:
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!