3

この問題は機能していますが、ファイル拡張子を追加するより良い方法があるかどうか知りたいですか?

私が今していることは:

String filePath = chooser.getSelectedFile().getAbsoluteFile() + ".html";

ハードコードされた拡張機能を追加します。そしてそれに保存します。

これを実装できる、より堅牢で論理的な方法があるかどうか疑問に思っていますか?

お時間をいただきありがとうございます。

編集:アプリをプラットフォーム間で移植できるようにしたいので、これをお願いします。したがって、手動で.htmlを追加すると、これをWindowsのみのソリューションにすることができます。

編集:私は、このアプローチをとらないと言っているドキュメントを見つけていないので、ハードコーディングされた.htmlが安全であることを知るのに十分なサーフィンをしたと思います(完全にはわかりません)。

問題:ファイルを別の形式、テキストで保存したい場合、たとえば、ユーザーがどの形式を選択したかを検出するにはどうすればよいですか?

FileNameExtensionFilterはダイアログにフィルターを追加できますが、選択したファイルタイプの戻り値を取得するにはどうすればよいですか?

編集:私はこれを研究しましたが、ユーザーが選択したファイルタイプを取得する方法がまだ不明です。

編集:これは私の問題の言い換えです:

代替テキストhttp://img98.imageshack.us/img98/4904/savef.jpg私の質問は、ユーザーが保存形式として選択した2つのフィルターのどちらを取得/検索するかです。HTMLまたはJPEG?JFileChooserからこの情報を取得するにはどうすればよいですか?ありがとうございました。

編集:何かを見つけました:それはあなたの助けがまだ歓迎されているJFileChooser.getFileFilter()と関係があります。

編集:getFileFilter()とFileNameExtensionFilterの比較により、この問題が解決されました。

4

3 に答える 3

2

この問題を解決するコードスニペットは次のとおりです。

JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(false);
chooser.setAcceptAllFileFilterUsed(false);

FileNameExtensionFilter filter = new FileNameExtensionFilter("HTML Documents", "htm", "html");
chooser.setFileFilter(filter);

int option = chooser.showSaveDialog(ChatGUI.this);
if (option == JFileChooser.APPROVE_OPTION) {
    // Set up document to be parsed as HTML
    StyledDocument doc = (StyledDocument)textPaneHistory.getDocument();
    HTMLEditorKit kit = new HTMLEditorKit();

    BufferedOutputStream out;

    try {
        System.out.println(chooser.getFileFilter());

        if (chooser.getFileFilter() == filter)
            System.out.println("ha ha");
    }
}
于 2010-05-03T11:19:04.990 に答える
1

あなたはおそらくこれを探しています:

秘訣は、返されたFileFilterをFileNameExtensionFilterにキャストしてから、getExtensions()を適用することです。

JFileChooser fileChooser = new JFileChooser("");

// Prevent user to use the default All Files option
fileChooser.setAcceptAllFileFilterUsed(false);

[...]

// Get the FileFilter
FileFilter ff = fileChooser.getFileFilter();

// Cast the FileFilter to FileNameExtensionFilter
FileNameExtensionFilter extFilter = (FileNameExtensionFilter)ff;

// Get the Extension
String ext = extFilter.getExtensions()[0];

または、コンパクトにするために:

ext = ((FileNameExtensionFilter)fileChooser.getFileFilter()).getExtensions()[0];
于 2013-05-30T00:54:00.950 に答える
0

あなたが何をしようとしているのかわかりません。選択したファイルを、すでにある形式以外の形式で保存しようとしていますか?選択したファイルのパスにはファイル拡張子が含まれるため、手動で追加する必要はありません。たとえば、次の場合、ファイルanything.htmlが選択されていると、画面に「/Users/banang/Documents/anything.html」が出力されます。

JFileChooser chooser = new JFileChooser();
chooser.showSaveDialog(null);
System.err.println(chooser.getSelectedFile().getCanonicalPath());

質問を少し明確にしてみてください。

于 2010-05-02T12:03:44.077 に答える