Откриване на файлов формат и проверка на съвместимост формат

Понякога е необходимо да се определи форматът на документа преди отваряне, защото разширението на файла не гарантира, че съдържанието на файла е подходящо. Например, известно е, че Crystal Reports често издава документи в RTF формат, но им дава .doc разширение.

Aspose.Words предоставя възможност за получаване на информация за типа файл, за да се избегне изключение, ако не сте сигурни какво е действителното съдържание на файла.

Откриване на файлов формат без изключение

Когато се занимавате с множество документи в различни формати на файлове, може да се наложи да отделите тези файлове, които могат да бъдат обработвани от Aspose.Words от тези, които не могат. Може също да искате да знаете защо някои от документите не могат да бъдат обработени.

Ако се опитате да заредите файл в Document обект и Aspose.Words не може да разпознае формата на файла или форматът не се поддържа, Aspose.Words ще направи изключение. Можете да хванете тези изключения и да ги анализирате, но Aspose.Words и осигурява DetectFileFormat метод, който ни позволява бързо да определим формата на файла, без да зареждаме документ с възможни изключения. Този метод връща FileFormatInfo обект, който съдържа засечената информация за типа на файла.

Проверка на съвместимостта на файловия формат

Можем да проверим съвместимостта във формат на всички файлове в избраната папка и да ги сортираме по формат в съответните подпапки.

Тъй като ние се занимаваме със съдържанието в папка, първото нещо, което трябва да направите е да получите колекция от всички файлове в тази папка с помощта на GetFiles метод на Directory клас (от System.IO a.

Следният пример за код показва как да получите списък на всички файлове в папката:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
File[] fileList = new File(dataDir).listFiles();

Когато всички файлове са събрани, останалата част от работата се извършва от DetectFileFormat метод, който проверява формата на файла.

Следният пример за код показва как да се итератира върху събрания списък от файлове, да се провери формата на всеки файл и да се премести всеки файл в съответната папка:

// 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;
}
}
}

Файловете се преместват в подходящи подпапки с помощта на Move метод на File Клас от едно и също System.IO Имепространство.

В горния пример се използват следните файлове: Името на файла е отляво и описанието му е от дясно:

Group на файлове Входящ документ Тип
Поддържани файлови формати Тестов файл (Doc).doc Microsoft Word 95/6. 0 или Microsoft Word 97 - 2003 г. документ.
Тестов файл (точка). точка Microsoft Word 95/6. 0 или Microsoft Word 97 год.
Тестов файл (Docx).docx Office Open XML Wordworking Документ на ML без макроси.
Тестов файл (Doccm). docm Office Open XML Wordworking МЛ документ с макроси.
Тестов файл (Dotx). dotx Office Open XML Wordworking Образец ML.
Тестов файл (Dotm). точка Office Open XML Wordworking Образец ML с макроси.
Тестов файл (XML). xml FlatOPC OOXML документ.
Тестов файл (RTF). rtf Документ с богат текстов формат.
Тестов файл (WordML). xml Microsoft Word 2003 Обработка на думи Документ на ML.
Тестов файл (HTML).html HTML документ.
Тестов файл (MHTML). mhtml MHTML (Уеб архив) документ.
Тестов файл (Odt).odt Open Document Text (OpenOffice Writer).
Тестов файл (Ott).ott Шаблон с отворен документ.
Тестов файл (docPreWord60).doc Microsoft Word 2.0 документа.
Кодирани документи Тестов файл (Enc).doc Шифрована Microsoft Word 95/6. 0 или Microsoft Word 97 - 2003 г. документ.
Тестов файл (Enc).docx Шифрована Office Open XML обработка на думи Документ на ML.
Неподдържани файлови формати Тестов файл (JPG). jpg Файл с изображения JPEG.