9

私がやろうとしているのは、テキスト ファイル (変更されない) をプログラムの JAR 内に保存して、読み取れるようにすることです。テキスト ファイルの目的は、クラスの 1 つによって読み込まれ、テキスト ファイルの内容が .csv ファイルに追加されることJEditorPaneです。ファイルは基本的にチュートリアルであり、ユーザーがチュートリアルを読むオプションをクリックすると、ファイルの内容が読み込まれ、ポップアップする新しいウィンドウに表示されます。

GUI部分はダウンしていますが、アクセスできるようにファイルをJARに保存する限り、私は途方に暮れています。willを使用して動作することを読みましたInputStreamが、いくつかのことを試した後、まだ動作していません。

また、GUI ウィンドウのアイコンとして使用するイメージを JAR に保存します。これは、次の方法で実現されます。

private Image icon = new ImageIcon(getClass()
    .getResource("resources/cricket.jpg")).getImage();

ただし、ファイルを取得しようとすると、これは機能しません。

private File file = new File(getClass.getResource("resources/howto.txt"));

現在の私のクラスは次のとおりです。

public class HowToScreen extends JFrame{

/**
 * 
 */
private static final long serialVersionUID = -3760362453964229085L;
private JEditorPane howtoScreen = new JEditorPane("text/html", "");
private Image icon = new ImageIcon(getClass().getResource("resources/cricket.jpg")).getImage();
private BufferedReader txtReader = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/resources/howto.txt")));

public HowToScreen(){
    setSize(400,300);
    setLocation(500,200);
    setTitle("Daily Text Tutorial");
    setIconImage(icon);

    howtoScreen.setEditable(false);
    howtoScreen.setText(importFileStream());
    add(howtoScreen);
    setVisible(true);
}

public String importFile(){
    String text = "";
    File file = new File("howto.txt");
    Scanner in = null;

    try {
        in = new Scanner(file);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

    while(in.hasNext()){
        text += in.nextLine();
    }

    in.close();
    return text;
}

public String importFileStream(){
    String text = "";
    Scanner in = new Scanner(txtReader);

    while(in.hasNext()){
        text += in.nextLine();
    }

    in.close();
    return text;
}
}

importFileチュートリアル ファイルを JAR 内に保存することを優先して削除されているため、このメソッドは無視してください。これにより、プログラムが使用できるスペースが制限されているため、プログラムは完全に自己完結型になります。

編集: 以下の提案をすべて試した後、JAR がテキスト ファイルをパッケージ化しているかどうかを確認しましたが、そうではありません。7zip で JAR を開くと、リソース フォルダーにアイコンに使用する画像が表示されますが、テキスト ファイルは表示されません。

4

4 に答える 4

12

JAR ファイル内で File を使用することはできません。テキスト データを読み取るには、InputStream を使用する必要があります。

BufferedReader txtReader = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/resources/mytextfile.txt")));

// ... Use the buffered reader to read the text file.
于 2013-06-06T04:57:27.527 に答える
2

次を試してください(フルパスパッケージを使用):

InputStream inputStream = ClassLoader.getSystemClassLoader().
        getSystemResourceAsStream("com/company/resources/howto.txt");
InputStreamReader streamReader = new InputStreamReader(inputStream, "UTF-8");
BufferedReader in = new BufferedReader(streamReader);

for (String line; (line = in.readLine()) != null;) {
    // do something with the line
}
于 2013-06-06T05:12:08.617 に答える
1

コードはコンパイルされません。Class.getResource()a を返し、引数として a をURL持つFileコンストラクターはありません。URL

.getResourceAsStream()代わりに使用できます。InputStream直接返されます。そのストリームからファイルの内容を読み取るだけです。

注: これらのメソッドはどちらもnull、リソースが見つからない場合に返されます: それを確認することを忘れないでください...

于 2013-06-06T04:58:39.013 に答える