拡張子またはMIME形式で行うことができますが、他の方法でファイルの種類を知ることができます.docxか.docかどうか。ファイルがApache POIからの.docx形式か.doc形式かを知る方法
答えて
それは.doc
または.docx
あることのいずれかに知られているファイルの集合かどうかを決めたが、拡張子を持つに応じてマークされていないだけの問題である場合は、.docx
ファイルは、ファイルのzip形式の集まりであるという事実を使用することができます。かもしれないのヘルプを次のように調整するために何か:fileStream
あなたは評価したいものは何でも、ファイルまたは他の入力ストリームである
boolean isZip = new ZipInputStream(fileStream).getNextEntry() != null;
。キー.docx
のエントリを探して、さらに圧縮ファイルを評価することができます。良いスタートリファレンスはです。同様に、バイナリファイルであることが分かっている場合は、Wordのファイル情報ブロック(Word (.doc) Binary File Formatを参照)をテストできます。
コンテンツの検出にApache Tikaを使用できます。しかし、これは、このような小さなタスクのために、これが大きなフレームワーク(多くの必要な依存関係)であることに気付いたはずです。
良い提案が、私はすべきです私はApacheのpoiを使用しているときにApacheのtikaを使用して、何かApacheのpoi経由で同じことをやっている? – Vipul
方法はありますが、直接的にはありません。しかし、Apache POIを使うと、それを見つけることができます。
HWPFDocumentクラスを使用して.docxファイルを読み取ろうとします。供給 データには、Office 2007+ XMLにあるように表示されます。それはあなたの
このデータを処理するためにPOIの 異なる部分を呼び出す必要があります(代わりにHSSFの例えばXSSF).docxのはXWPFDocumentクラスを使用して読み取ることができます。org.apache.poi.poifs.filesystem.OfficeXmlFileExceptionを次のエラーを与えるだろう。 OLE2 Office Documentsを扱うPOIの部分 を呼び出しています。あなたは
String filePath = "C:\\XXXX\XXXX.docx"; FileInputStream inStream; try { inStream = new FileInputStream(new File(filePath)); HWPFDocument doc = new HWPFDocument(inStream); WordExtractor wordExtractor = new WordExtractor(doc); System.out.println("Getting words"+wordExtractor.getText()); } catch (Exception e) { System.out.print("Its not a .doc format"); }
は、なぜあなたはApache Tika
を使用していけない:
File file = new File('File Here');
Tika tika = new Tika();
String filetype = tika.detect(file);
System.out.println(filetype);
あなたは、Apache POIを使用していると仮定すると、あなたはいくつかのオプションがあります。
1つは、ファイルの最初の数バイトを取得し、ask POIFSFileSystem with the hasPOIFSHeader(byte) methodです。マーク/リセットをサポートするストリームがある場合は、代わりにPOIFSFileSystem.hasPOIFSHeader(InputStream)を使用できます。それがうまく開いた場合 - これらはtrue
を返すならば、そうでなければ、のtry/catchの方法を好む場合は、POIFSFileSystem
でそれを開き、OfficeXmlFileException
をキャッチしようと、そうでない場合XWPF
で.docx
としてみてください、HWPF
と.doc
としてそれを開こうそれはあなたが例外を取得する場合、あなたが使用中の第一のパターンを参照してくださいよ、あなたは、論理形式の類似したセットをコピーすることができ、それは私のためsource code for WorkbookFactory作品
- 1. Apache poiの日付形式
- 2. 検証:アップロードされるファイルがExcel形式であるかどうかを確認する方法は? - Apache POI
- 3. PDF、DOC、DOCXをPythonでテキスト形式に変換するソリューション
- 4. ジャスパーレポート:空白のdocx形式
- 5. Python-docx形式のフォーマット
- 6. jpegがRGB形式かCMYK形式かを確認する方法は?
- 7. オーディオファイルを.vox形式から.mp3形式に変換する方法
- 8. Sparkからファイルをフェザー形式で保存する方法は?
- 9. .docまたは.docxファイルを開き、javaを使用してテキスト形式をチェックする方法
- 10. AppRunファイル形式ですか?
- 11. Crystal Reportを.docx形式にエクスポートする
- 12. PCM形式とBWFファイル形式を区別しますか?
- 13. リストからのJSON形式
- 14. HTML形式からPDF形式(クライアント側、あらかじめデザインされたPDF形式)
- 15. .docxをjsonドキュメント形式に変換するときにApache POIに問題があります。
- 16. docをpdf形式に変換する#
- 17. VBAのテキスト形式から日付形式への日付
- 18. Coldfusion日付形式からCシャープ形式への変換
- 19. txtからXTS形式
- 20. JSON形式からExcelへ
- 21. []形式のリストを()形式に変換する方法
- 22. JSONP形式をJSON形式に変換する方法はありますか?
- 23. Officeファイル(docx、xlsx)をGoogleの形式に変換する方法C#
- 24. Apache POI式のカラーセル
- 25. Vimのdoc形式の仕様はどこですか?
- 26. Apache POIを使用してxlsx形式でファイルを書き込む
- 27. Java日付形式からJavaScript日付形式へ
- 28. フォーマットDateTimeオブジェクト(システム時刻形式から必要な形式へ)
- 29. Excel形式のファイルをサーバー上のSQL形式に変換する方法
- 30. Apache Camelのメッセージ形式
ことを、感謝を見れば、それは
.docx
だ、
.doc
だ – Vipul