code: protected File chooseFile(final JTable table, final String extension) throws IOException {
  		final JFileChooser myFileChooser = getFileChooser();
  
  		final MExtensionFileFilter filter = new MExtensionFileFilter(extension);
  		myFileChooser.addChoosableFileFilter(filter);
  
  		String title = buildTitle(table);
  		if (title != null) {
  			// on remplace par des espaces les caractères interdits dans les noms de fichiers : \ / : * ? " < > |
  			final String notAllowed = "\\/:*?\"<>|";
  			final int notAllowedLength = notAllowed.length();
  			for (int i = 0; i < notAllowedLength; i++) {
  				title = title.replace(notAllowed.charAt(i), ' ');
  			}
  			myFileChooser.setSelectedFile(new File(title));
  		}
  		// l'extension sera ajoutée ci-dessous au nom du fichier
  
  		try {
  			final Component parent = table.getParent() != null ? table.getParent() : table;
  			if (myFileChooser.showSaveDialog(parent) == JFileChooser.APPROVE_OPTION) {
  				String fileName = myFileChooser.getSelectedFile().getCanonicalPath();
  				if (!fileName.endsWith('.' + extension)) {
  					fileName += '.' + extension; // NOPMD
  				}
  
  				return new File(fileName);
  			}
  			return null;
  		} finally {
  			myFileChooser.removeChoosableFileFilter(filter);
  		}
  	}
docs: Choix du fichier pour un export.
  
  @return File
  @param table
  JTable
  @param extension
  String
  @throws IOException
  Erreur disque