-1

.txt、.doc、および .docx ファイルを読み取り、それらのファイルの内容を印刷したいと考えています。以下のコードを実行すると、いくつかの .doc および .txt ファイルが読み取られますが、多くのファイルは読み取ることができません。

import java.io.File;
import javax.swing.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;

public class FindYourDocx 
{

    public static void main(String[] args) 
    {
String text = "";
    int read, N = 1024 * 1024;
    char[] buffer = new char[N];

    try { 
        JFileChooser openFile=new JFileChooser();
             openFile.setCurrentDirectory(new File("."));
             openFile.showOpenDialog(null);
            File f1=openFile.getSelectedFile();
           String file1=f1.toString();
           File f =new File(file1);
           JOptionPane.showMessageDialog(null,f);
        FileReader fr = new FileReader(f);
        BufferedReader br = new BufferedReader(fr);

        while(true) {
            read = br.read(buffer, 0, N);
            text += new String(buffer, 0, read);
        System.out.println("Follows"+text+" "); 
                    if(read < N) {
                break;
            }
       System.out.println("Follows"+text+" "); }
    } catch(Exception ex) {
        ex.printStackTrace();
    }

    }}

上記のコードを(一部のファイルに対して)実行すると、次のような有線メッセージが表示されます
http://i.stack.imgur.com/RwNWM.jpg

誰かがこの問題を解決するのを手伝ってください....

.docx を読むために、apacheio を使用して XWPFDocument のようなものに出くわしました ....これは何ですか?

4

2 に答える 2

0

まず第一に、あなたの問題について考える必要があります: さまざまなファイルの種類がファイルとしてどのように見えるか、それらの構造は何か、印刷したいコンテンツは何か、そして「印刷」とはそもそも何を意味するのでしょうか? あなたがしているのは、ファイルを読み取り、テキストとして扱い、STDOUT に出力することです。あなたの場合、「印刷」はこれを意味しますか?「印刷」とは、コンテンツをプリンターに送信して紙を入手できることと解釈しています。

別のヒント: Doc と Docx はバイナリ ファイルであり、「印刷可能な」テキストが「どこかに」含まれています。ファイルを読み取ってデータを操作するだけではいけません。これらのファイル形式がどのように見えるか、コンテンツがどのようなものであるかなどを知る必要があります.Javaはそのままではそれを行うことができません.これらのファイル形式を解析して何かを行うには、追加のライブラリが必要です.

docx などの形式に関するチュートリアルや質問が多数あります。

poi jarを使用してJava APIでdocxファイルのコンテンツを読み取る方法

于 2013-10-26T14:19:13.847 に答える
0

.docx を読むために、apacheio を使用して XWPFDocument のようなものに出くわしました ....これは何ですか?

あなたはApache POIを意味します。詳細については、ウェブサイトをご覧ください。簡単に言うと、Apache POI と docx4j (あなたがタグ付けしたことに注意してください) はどちらも、Microsoft Office ファイルの読み取り、操作、および書き込みを目的とした Java ライブラリです。

「doc」ファイルは、Microsoft 独自のバイナリ ファイルです。Java IO API だけを使用してそれらを読み込んで表示しようとすると、表示されるのはバイナリ データの表現だけです。それはあなたにとって役に立ちません。Apache POI または docx4j の出番となる Word ファイルの読み込みとトラバース専用の API を使用する必要があります。

「docx」ファイルは、新しい XML ベースの Microsoft Office 形式です。docx ファイルは基本的に、Word ファイルを構成するさまざまなアセットを含む zip フォルダーです。

前述したように、Word ファイルを適切に読み取るには、前述のライブラリのいずれかを使用する必要があります。Apache と docx4j の両方の Web サイトには、Word 文書を開いてトラバースするためのサンプル コードが多数含まれています (POI は古い .doc 形式で動作しますが、docx4j は .docx ファイル専用です)。

http://www.docx4java.org

http://poi.apache.org

于 2013-10-27T12:24:22.980 に答える