5

次のコードがあります

FileChooser choose = new FileChooser();
choose.getExtensionFilters().add(new FileChooser.ExtensionFilter("Text doc(*.txt)", "*.txt"));
File f = choose.showSaveDialog(stage);

しかし、選択ダイアログで保存ボタンをクリックした後、作成されたファイルはファイル形式ですが、.txt ではありません。これを修正するにはどうすればよいですか?

4

2 に答える 2

14

JavaFX 2.2 を使用して同じ問題が発生しました。次の回避策を使用しています。

FileChooser choose = new FileChooser();
choose.getExtensionFilters().add(new FileChooser.ExtensionFilter("Text doc(*.txt)", "*.txt"));
File f = choose.showSaveDialog(stage);
if(!f.getName().contains(".")) {
  f = new File(f.getAbsolutePath() + ".txt");
}
于 2012-11-02T14:35:24.570 に答える
9

私にとっては、それが最もうまくいきました

FileChooser choose = new FileChooser();
choose.getExtensionFilters().add(new FileChooser.ExtensionFilter("Text doc(*.txt)", "*.txt"));
choose.setInitialFileName("*.txt");
File file = choose.showSaveDialog(stage);
if (file != null) {
  if (file.getName().endsWith(".txt")) {
    // do the operation with the file (i used a builder)
  } else {
    throw new Exception(file.getName() + " has no valid file-extension.");
  }
}

そのように拡張子を手動で置き換える問題:

if(!f.getName().contains(".")) {
  f = new File(f.getAbsolutePath() + ".txt");
}

つまり、拡張子のないファイルは存在しない可能性がありますが、拡張子のあるファイルが存在する場合は、警告なしに上書きされました。予期しない動作。

于 2014-03-20T10:32:18.643 に答える