2012-05-09 30 views
5

tengo el siguiente códigoEstablecer extensión de archivo inicial al guardar el archivo

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

Pero después de hacer clic en el botón Guardar en el diálogo selector, archivo creado es en el formato de archivo, pero no en .txt, cómo ¿arregla esto?

Respuesta

10

Tengo el mismo problema al usar JavaFX 2.2. estoy usando solución siguiente:

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"); 
} 
+3

Este truco no está completo, el FileChooser comprueba la existencia del archivo y se desplaza si existe internamente y todo lo que se hará sin la extensión, mencionó que buscará el nombre de archivo incorrecto. –

6

Para mí funcionó mejor, a

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."); 
    } 
} 

El problema de sustituir manualmente la extensión de esa manera:

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

es decir, que una es posible que no exista el archivo sin una extensión, pero si el archivo existía con la extensión, se sobrescribió sin previo aviso. comportamiento no esperado.

Cuestiones relacionadas