Deteksi Format File dan Periksa Kompatibilitas Format
Terkadang perlu untuk menentukan format dokumen sebelum dibuka karena ekstensi file tidak menjamin bahwa isi file tersebut sesuai. Misalnya, diketahui bahwa Crystal Reports sering kali mengeluarkan dokumen dalam format RTF, tetapi memberikannya.ekstensi dokumen.
Aspose.Words menyediakan kemampuan untuk memperoleh informasi tentang jenis file untuk menghindari pengecualian jika Anda tidak yakin apa isi sebenarnya dari file tersebut.
Mendeteksi Format File tanpa Pengecualian
Saat Anda berurusan dengan banyak dokumen dalam berbagai format file, Anda mungkin perlu memisahkan file yang dapat diproses oleh Aspose.Words dari yang tidak dapat. Anda mungkin juga ingin tahu mengapa beberapa dokumen tidak dapat diproses.
Jika Anda mencoba memuat file ke dalam objek Document dan Aspose.Words tidak dapat mengenali format file atau formatnya tidak didukung, Aspose.Words akan mengeluarkan pengecualian. Anda dapat menangkap pengecualian tersebut dan menganalisisnya, tetapi Aspose.Words juga menyediakan metode DetectFileFormat yang memungkinkan kita menentukan format file dengan cepat tanpa memuat dokumen dengan kemungkinan pengecualian. Metode ini mengembalikan objek FileFormatInfo yang berisi informasi yang terdeteksi tentang jenis file.
Periksa Kompatibilitas Format File
Kami dapat memeriksa kompatibilitas format semua file di folder yang dipilih dan mengurutkannya berdasarkan format ke dalam subfolder yang sesuai.
Karena kita berurusan dengan konten dalam sebuah folder, hal pertama yang perlu kita lakukan adalah mendapatkan kumpulan semua file dalam folder ini menggunakan metode GetFiles dari kelas Directory
(dari namespace System.IO
).
Contoh kode berikut menunjukkan cara mendapatkan daftar semua file dalam folder:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
File[] fileList = new File(dataDir).listFiles(); |
Ketika semua file dikumpulkan, sisa pekerjaan dilakukan dengan metode DetectFileFormat, yang memeriksa format file.
Contoh kode berikut menunjukkan cara mengulang daftar file yang dikumpulkan, memeriksa format setiap file, dan memindahkan setiap file ke folder yang sesuai:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getDataDir(CheckFormatCompatibility.class); | |
String supportedDir = dataDir + "OutSupported" + File.separator; | |
String unknownDir = dataDir + "OutUnknown" + File.separator; | |
String encryptedDir = dataDir + "OutEncrypted" + File.separator; | |
String pre97Dir = dataDir + "OutPre97" + File.separator; | |
File[] fileList = new File(dataDir).listFiles(); | |
// Loop through all found files. | |
for (File file : fileList) { | |
if (file.isDirectory()) | |
continue; | |
// Extract and display the file name without the path. | |
String nameOnly = file.getName(); | |
System.out.print(nameOnly); | |
// Check the file format and move the file to the appropriate folder. | |
String fileName = file.getPath(); | |
FileFormatInfo info = FileFormatUtil.detectFileFormat(fileName); | |
// Display the document type. | |
switch (info.getLoadFormat()) { | |
case LoadFormat.DOC: | |
System.out.println("\tMicrosoft Word 97-2003 document."); | |
break; | |
case LoadFormat.DOT: | |
System.out.println("\tMicrosoft Word 97-2003 template."); | |
break; | |
case LoadFormat.DOCX: | |
System.out.println("\tOffice Open XML WordprocessingML Macro-Free Document."); | |
break; | |
case LoadFormat.DOCM: | |
System.out.println("\tOffice Open XML WordprocessingML Macro-Enabled Document."); | |
break; | |
case LoadFormat.DOTX: | |
System.out.println("\tOffice Open XML WordprocessingML Macro-Free Template."); | |
break; | |
case LoadFormat.DOTM: | |
System.out.println("\tOffice Open XML WordprocessingML Macro-Enabled Template."); | |
break; | |
case LoadFormat.FLAT_OPC: | |
System.out.println("\tFlat OPC document."); | |
break; | |
case LoadFormat.RTF: | |
System.out.println("\tRTF format."); | |
break; | |
case LoadFormat.WORD_ML: | |
System.out.println("\tMicrosoft Word 2003 WordprocessingML format."); | |
break; | |
case LoadFormat.HTML: | |
System.out.println("\tHTML format."); | |
break; | |
case LoadFormat.MHTML: | |
System.out.println("\tMHTML (Web archive) format."); | |
break; | |
case LoadFormat.ODT: | |
System.out.println("\tOpenDocument Text."); | |
break; | |
case LoadFormat.OTT: | |
System.out.println("\tOpenDocument Text Template."); | |
break; | |
case LoadFormat.DOC_PRE_WORD_60: | |
System.out.println("\tMS Word 6 or Word 95 format."); | |
break; | |
case LoadFormat.UNKNOWN: | |
default: | |
System.out.println("\tUnknown format."); | |
break; | |
} | |
// Now copy the document into the appropriate folder. | |
if (info.isEncrypted()) { | |
System.out.println("\tAn encrypted document."); | |
fileCopy(fileName, new File(encryptedDir, nameOnly).getPath()); | |
} else { | |
switch (info.getLoadFormat()) { | |
case LoadFormat.DOC_PRE_WORD_60: | |
fileCopy(fileName, new File(pre97Dir + nameOnly).getPath()); | |
break; | |
case LoadFormat.UNKNOWN: | |
fileCopy(fileName, new File(unknownDir + nameOnly).getPath()); | |
break; | |
default: | |
fileCopy(fileName, new File(supportedDir + nameOnly).getPath()); | |
break; | |
} | |
} | |
} |
File dipindahkan ke subfolder yang sesuai menggunakan metode Move
dari kelas File
, dari namespace System.IO
yang sama.
File-file berikut digunakan dalam contoh di atas. Nama file ada di sebelah kiri dan deskripsinya ada di sebelah kanan:
Grup File | Dokumen Masukan | Jenis |
---|---|---|
Format file yang didukung | Test File (Doc).doc | Dokumen Microsoft Word 95/6.0 atau Microsoft Word 97-2003. |
Test File (Dot).dot | Templat Microsoft Word 95/6.0 atau Microsoft Word 97-2003. | |
Test File (Docx).docx | Office Membuka dokumen XML WordprocessingML tanpa makro. | |
Test File (Docm).docm | Office Membuka dokumen XML WordprocessingML dengan makro. | |
Test File (Dotx).dotx | Templat Kantor Terbuka XML WordprocessingML. | |
Test File (Dotm).dotm | Templat Office Open XML WordprocessingML dengan makro. | |
Test File (XML).xml | FlatOPC OOXML Dokumen. | |
Test File (RTF).rtf | Dokumen Format Teks Kaya. | |
Test File (WordML).xml | Microsoft Word Dokumen tahun 2003 WordprocessingML. | |
Test File (HTML).html | HTML dokumen. | |
Test File (MHTML).mhtml | Dokumen MHTML (Arsip web). | |
Test File (Odt).odt | OpenDocument Teks (OpenOffice Penulis). | |
Test File (Ott).ott | OpenDocument Templat Dokumen. | |
Test File (DocPreWord60).doc | Microsoft Word 2.0 dokumen. | |
Dokumen terenkripsi | Test File (Enc).doc | Dokumen Microsoft Word 95/6.0 atau Microsoft Word 97 – 2003 terenkripsi. |
Test File (Enc).docx | Kantor Terenkripsi Membuka dokumen XML WordprocessingML. | |
Format file yang tidak didukung | Test File (JPG).jpg | JPEG berkas gambar. |