Detekovat formát souboru a kontrolovat kompatibilitu formátu
Někdy je nutné určit formát dokumentu před otevřením, protože přípona souboru nezaručuje, že obsah souboru je vhodný. Například je známo, že Crystal Reports často vytiskne dokumenty ve formátu RTF, ale dává jim .doc rozšíření.
Aspose.Words poskytuje možnost získat informace o typu souboru, aby se zabránilo výjimku, pokud si nejste jisti, jaký je skutečný obsah souboru.
Detekovat formát souboru bez výjimky
Pokud se zabýváte více dokumenty v různých formátech souborů, můžete potřebovat oddělit soubory, které mohou být zpracovány Aspose.Words od těch, kteří nemohou. Možná budete také chtít vědět, proč některé dokumenty nelze zpracovat.
Pokud se pokusíte načíst soubor do Document objekt a Aspose.Words nelze rozpoznat formát souboru nebo formát není podporován, Aspose.Words Hodí výjimku. Můžete chytit tyto výjimky a analyzovat je, ale Aspose.Words také poskytuje DetectFileFormat metoda, která nám umožňuje rychle určit formát souboru bez načtení dokumentu s možnými výjimkami. Tato metoda vrací a FileFormatInfo objekt, který obsahuje zjištěné informace o typu souboru.
Zkontrolovat kompatibilitu formátů souborů
Můžeme zkontrolovat formátovou kompatibilitu všech souborů ve vybrané složce a třídit je formátem do odpovídajících podsložek.
Vzhledem k tomu, že se zabýváme obsahem ve složce, první věc, kterou musíme udělat, je získat sbírku všech souborů v této složce pomocí GetFiles způsob Directory
třída (z System.IO
namespace).
Následující příklad kódu ukazuje, jak získat seznam všech souborů ve složce:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
File[] fileList = new File(dataDir).listFiles(); |
Když jsou všechny soubory shromažďovány, zbytek práce provádí DetectFileFormat metoda, která kontroluje formát souboru.
Následující příklad kódu ukazuje, jak iterovat nad sebraným seznamem souborů, zkontrolovat formát každého souboru a přesunout každý soubor do příslušné složky:
// 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; | |
} | |
} | |
} |
Soubory jsou přesunuty do odpovídajících podsložek pomocí Move
způsob File
třída, ze stejného složení System.IO
jmenný prostor.
Ve výše uvedeném příkladu jsou použity následující soubory. Jméno souboru je vlevo a jeho popis je vpravo:
Group souborů | Vstupní dokument | Typ |
---|---|---|
Podporované formáty souborů | Testovací soubor (Doc).doc | Microsoft Word 95, 0 nebo Microsoft Word 97 Dokument 2003/2003. |
Testovat soubor (dot).dot | Microsoft Word 95, 0 nebo Microsoft Word 97; IAS 39 odst. | |
Testovací soubor (Docx).docx | Otevřít XML zpracování slov ML dokument bez makros. | |
Testovací soubor (Docm).docm | Otevřít XML zpracování slov Dokument ML s makrami. | |
Testovat soubor (Dotx).dotx | Otevřít XML zpracování slov ML šablona. | |
Testovat soubor (dotm).dotm | Otevřít XML zpracování slov šablona ML s makrami. | |
Testovací soubor (XML).xml | FlatOPC OOXML dokument. | |
Testovací soubor (RTF).rtf | Rich Text Format dokument. | |
Testovací soubor (WordML).xml | Microsoft Word 2003 Zpracování slov Dokument ML. | |
Testovací soubor (HTML).html | HTML dokument. | |
Testovací soubor (MHTML).mhtml | MHTML (Web archiv) dokument. | |
Testovat soubor (Odt).odt | OpenDocument Text (OpenOffice Writer). | |
Testovat soubor (Ott).ott | Otevřít šablonu dokumentu. | |
Testovací soubor (DocPreWord60).doc | Microsoft Word 2.0 dokument. | |
Zašifrované dokumenty | Testovat soubor (Enc).doc | Zašifrováno Microsoft Word 95, 0 nebo Microsoft Word 97 Dokument 2003/2003. |
Testovat soubor (Enc).docx | Zašifrovaný Office Open XML Word processing Dokument ML. | |
Nepodporované formáty souborů | Testovací soubor (JPG). jpg | Obrazový soubor JPEG. |