Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/TXMUIMessages.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/TXMUIMessages.java	(revision 2859)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/TXMUIMessages.java	(revision 2860)
@@ -8,6 +8,8 @@
 	
 	private static final String BUNDLE_NAME = "org.txm.rcp.messages.messages"; //$NON-NLS-1$
 
+	public static String theP0FileAlreadyExistsWouldYouLikeToReplaceIt;
+
 	public static String theP0directoryNotABinaryCorpus;
 	
 	public static String P0CorpusLoaded;
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/messages.properties
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/messages.properties	(revision 2859)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/messages.properties	(revision 2860)
@@ -9,7 +9,8 @@
 Explorer_7 = ⌂
 
 FileTreeContentProvider_4 = '
-
+
+theP0FileAlreadyExistsWouldYouLikeToReplaceIt=the {0} file already exists. Would you like to replace it?
 LoadBinaryCorporaDirectory_aCorpusNamedP0alreadyExistsLoadingOfP1Canceled = A corpus named {0} already exists, loading of {1} canceled.
 LoadBinaryCorporaDirectory_corporaDirectoryNotFoundAborting               = Corpora directory not found. Aborting.
 LoadBinaryCorporaDirectory_corpusLoad                                     = Corpus load
@@ -469,7 +470,7 @@
 exporting = Exporting…
 
 exporting = Exporting {0}…
-
+exportingP0 = Exporting {0}…
 exportingAnnotations = Exporting annotations.
 
 exportingP0ThisMayTakeAWhile = Exporting {0}. This can take time, depending on the size of the corpus.
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/messages_fr.properties
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/messages_fr.properties	(revision 2859)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/messages_fr.properties	(revision 2860)
@@ -9,7 +9,7 @@
 Explorer_7 = ⌂
 
 FileTreeContentProvider_4 = '
-
+theP0FileAlreadyExistsWouldYouLikeToReplaceIt=Le fichier {0} existe déjà. Voulez vous vraiment le remplacer ?
 P0CorpusLoaded = {0} corpus chargé(s).
 
 SourceDirectoryPage_0  = Selection du répertoire des fichiers sources
@@ -419,7 +419,7 @@
 exporting = Exportation…
 
 exporting = Exportation de {0}…
-
+exportingP0 = Exportation de {0}…
 exportingAnnotations = Exportation des annotations…
 
 exportingP0ThisMayTakeAWhile = Exportation de {0}. Cela peut prendre du temps, en fonction de la taille du corpus.
Index: tmp/org.txm.core/src/java/org/txm/Toolbox.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/Toolbox.java	(revision 2859)
+++ tmp/org.txm.core/src/java/org/txm/Toolbox.java	(revision 2860)
@@ -80,7 +80,7 @@
 public class Toolbox {
 
 	public static final DateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
-	public static final DateFormat shortUKDateformat = new SimpleDateFormat("dd-MM-yy");
+	//public static final DateFormat shortUKDateformat = new SimpleDateFormat("dd-MM-yy");
 
 	private static LinkedHashMap<EngineType, EnginesManager<?>> enginesManagers = new LinkedHashMap<EngineType, EnginesManager<?>>();
 
Index: tmp/org.txm.searchengine.cqp.rcp/src/org/txm/searchengine/cqp/rcp/handlers/base/ExportCorpus.java
===================================================================
--- tmp/org.txm.searchengine.cqp.rcp/src/org/txm/searchengine/cqp/rcp/handlers/base/ExportCorpus.java	(revision 2859)
+++ tmp/org.txm.searchengine.cqp.rcp/src/org/txm/searchengine/cqp/rcp/handlers/base/ExportCorpus.java	(revision 2860)
@@ -55,15 +55,15 @@
  * Export a corpus to the .txm binary format (Zip)
  */
 public class ExportCorpus extends AbstractHandler {
-	
+
 	public final static String ID = "org.txm.rcp.commands.base.ExportCorpus"; //$NON-NLS-1$
-	
+
 	/** The selection. */
 	private IStructuredSelection selection;
-	
+
 	/** The lastopenedfile. */
 	private static String lastopenedfile;
-	
+
 	/*
 	 * (non-Javadoc)
 	 * @see
@@ -73,15 +73,15 @@
 	@Override
 	public Object execute(ExecutionEvent event) throws ExecutionException {
 		selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event);
-		
+
 		Shell shell = HandlerUtil.getActiveWorkbenchWindowChecked(event)
 				.getShell();
-		
+
 		if (!(selection.getFirstElement() instanceof MainCorpus))
 			return null;
-		
+
 		final MainCorpus corpus = (MainCorpus) selection.getFirstElement();
-		
+
 		try {
 			corpus.compute(false);
 		}
@@ -90,31 +90,43 @@
 			e.printStackTrace();
 			return null;
 		}
-		
+
 		if (corpus.isModified()) {
 			boolean ret = MessageDialog.openConfirm(shell, "Export - " + corpus.getName() + " annotations not saved",
 					"Do you wish to export without the current annotations?\n\n(to include the current annotations in the exported corpus, you need to save them before calling the \"Export\" command)");
 			if (!ret) return null;
 		}
-		
+
 		ExportCorpusDialog dialog = new ExportCorpusDialog(shell, corpus);
-		
+
 		if (dialog.open() == Window.OK) {
-			
+
 			final File outfile = dialog.getZipFile();
+
+			if (outfile.exists()) {
+				boolean ret = MessageDialog.openConfirm(shell, "Export - " + corpus.getName() + " warning",
+						TXMUIMessages.bind(TXMUIMessages.theP0FileAlreadyExistsWouldYouLikeToReplaceIt, outfile.getAbsoluteFile()));
+				if (!ret) {
+					Log.info(TXMUIMessages.abort);
+					return null;
+				}
+			}
+
 			Log.info(NLS.bind(TXMUIMessages.exportingP0, corpus.getName()));
 			JobHandler jobhandler = new JobHandler(NLS.bind(TXMUIMessages.exportingP0, corpus.getName())) {
-				
+
 				@Override
 				protected IStatus run(IProgressMonitor monitor) {
 					this.runInit(monitor);
 					try {
 						monitor.beginTask(NLS.bind(TXMUIMessages.exportingP0ThisMayTakeAWhile, corpus.getName()), 100);
-						
+
+
+
 						if (!corpus.export(outfile, this, dialog.getIgnoreNames())) {
 							System.out.println(NLS.bind(TXMUIMessages.failedToExportCorpusP0, corpus.getName()));
 						}
-						
+
 						System.out.println(TXMUIMessages.bind(TXMUIMessages.doneTheCreatedBinaryFileIsP0, outfile.getAbsolutePath()));
 						monitor.worked(100);
 					}
@@ -129,7 +141,7 @@
 			};
 			jobhandler.startJob();
 		}
-		
+
 		return null;
 	}
 }
Index: tmp/org.txm.searchengine.cqp.rcp/src/org/txm/searchengine/cqp/rcp/dialogs/ExportCorpusDialog.java
===================================================================
--- tmp/org.txm.searchengine.cqp.rcp/src/org/txm/searchengine/cqp/rcp/dialogs/ExportCorpusDialog.java	(revision 2859)
+++ tmp/org.txm.searchengine.cqp.rcp/src/org/txm/searchengine/cqp/rcp/dialogs/ExportCorpusDialog.java	(revision 2860)
@@ -32,9 +32,8 @@
 import org.eclipse.swt.widgets.TableItem;
 import org.eclipse.swt.widgets.Text;
 import org.txm.Toolbox;
-import org.txm.core.results.TXMResult;
+import org.txm.core.preferences.TXMPreferences;
 import org.txm.objects.Project;
-import org.txm.rcp.swt.dialog.LastOpened;
 import org.txm.searchengine.cqp.corpus.CQPCorpus;
 
 /**
@@ -43,28 +42,28 @@
  *
  */
 public class ExportCorpusDialog extends Dialog {
-	
+
 	/**
 	 * list of the default files to include in the corpus binary
 	 */
 	private List<String> defaultFiles = Arrays.asList("HTML", "txm", "data", "registry", "annotations", "analec", "temporary_annotations", "xsl", "css", ".settings", ".project");
-	
+
 	private File zipFile;
-	
+
 	private LinkedHashMap<File, Boolean> selectedFiles;
-	
+
 	private CQPCorpus corpus;
-	
+
 	private TableViewer treeViewer;
-	
+
 	private TableViewerColumn nameColumn;
-	
+
 	private Text textField;
-	
+
 	private Button selectButton;
-	
+
 	public final static String ID = ExportCorpusDialog.class.getName();
-	
+
 	/**
 	 * 
 	 * @param parentShell
@@ -76,67 +75,82 @@
 		super(parentShell);
 		this.corpus = corpus;
 	}
-	
+
 	@Override
 	protected void configureShell(Shell newShell) {
 		super.configureShell(newShell);
 		newShell.setText(NLS.bind("Exporting {0}...", corpus.getName()));
-		newShell.setMinimumSize(400, 200);
+		newShell.setMinimumSize(400, 300);
 	}
-	
+
 	@Override
 	protected Control createDialogArea(Composite parent) {
 		Composite comp = (Composite) super.createDialogArea(parent);
-		
+
 		GridLayout layout = (GridLayout) comp.getLayout();
 		layout.numColumns = 3;
-		
+
 		Label l = new Label(comp, SWT.LEFT);
 		l.setText("Output file");
 		l.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false));
-		
+
 		textField = new Text(comp, SWT.SINGLE | SWT.BORDER);
 		textField.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
-		textField.setText(Toolbox.getTxmHomePath() + "/" + corpus.getName() + "-" + Toolbox.shortUKDateformat.format(Calendar.getInstance().getTime()) + ".txm"); //$NON-NLS-1$
-		
+		String previousPath = TXMPreferences.getString("path", ExportCorpusDialog.class.getName());
+		if (previousPath == null || previousPath.length() == 0) {
+			previousPath = System.getProperty("user.home"); ////$NON-NLS-0$
+		}
+		textField.setText(previousPath + "/" + corpus.getName() + "-" + Toolbox.dateformat.format(Calendar.getInstance().getTime()) + ".txm"); //$NON-NLS-1$
+
 		selectButton = new Button(comp, SWT.PUSH);
 		selectButton.setText("...");
 		selectButton.addSelectionListener(new SelectionListener() {
-			
+
 			@Override
 			public void widgetSelected(SelectionEvent e) {
 				FileDialog dialog = new FileDialog(selectButton.getShell(), SWT.SAVE);
-				
+
 				String[] exts = { "*.txm", "*.zip" }; //$NON-NLS-1$ //$NON-NLS-2$
 				dialog.setFilterExtensions(exts);
-				dialog.setFilterPath(textField.getText());
-				dialog.setFileName(textField.getText());
-				
-				String path = dialog.open();
+				String path = textField.getText();
+				if (path != null && path.length() > 0) {
+					File p = new File(path);
+					if (p.isDirectory()) {
+						dialog.setFilterPath(textField.getText());
+					} else {
+						dialog.setFilterPath(p.getParent());
+						dialog.setFileName(p.getName());
+					}
+				}
+				//
+
+				path = dialog.open();
 				if (path != null) {
 					textField.setText(path);
-					getButton(IDialogConstants.OK_ID).setEnabled(new File(path).getParentFile().exists());
+					File dir = new File(path).getParentFile();
+					getButton(IDialogConstants.OK_ID).setEnabled(dir.exists());
+					TXMPreferences.put(ExportCorpusDialog.class.getName(), "path", dir.getAbsolutePath());
 				}
 			}
-			
+
 			@Override
 			public void widgetDefaultSelected(SelectionEvent e) {}
 		});
-		
+
 		selectedFiles = new LinkedHashMap<>();
 		Project project = corpus.getProject();
 		File directory = project.getProjectDirectory();
 		if (directory.exists()) {
-			
+
 			File[] files = directory.listFiles(new FileFilter() {
-				
+
 				@Override
 				public boolean accept(File f) {
 					return !f.getName().startsWith(".") && !f.isHidden() && f.isDirectory() && !defaultFiles.contains(f.getName());
 				}
 			});
 			Arrays.sort(files, new Comparator<File>() {
-				
+
 				@Override
 				public int compare(File arg0, File arg1) {
 					if (arg0.isDirectory() && arg1.isDirectory()) {
@@ -157,7 +171,7 @@
 			});
 			for (File f : files) {
 				if (!f.isHidden() && f.isDirectory()) {
-					
+
 					if (defaultFiles.contains(f.getName())) {
 						selectedFiles.put(f, true);
 					}
@@ -166,33 +180,33 @@
 					}
 				}
 			}
-			
+
 			if (files.length > 0) {
 				treeViewer = new TableViewer(comp, SWT.CHECK | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
-				
+
 				treeViewer.setContentProvider(new ArrayContentProvider());
-				
+
 				treeViewer.getTable().addListener(SWT.Selection, event -> {
-					
+
 					if (event.detail == SWT.CHECK) {
 						TableItem item = (TableItem) event.item;
 						selectedFiles.put((File) event.item.getData(), item.getChecked());
 					}
 				});
-				
+
 				treeViewer.getTable().setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true, 3, 1));
 				treeViewer.getTable().setHeaderVisible(true);
 				treeViewer.getTable().setLinesVisible(true);
-				
+
 				nameColumn = new TableViewerColumn(treeViewer, SWT.NONE);
 				nameColumn.getColumn().setText("Extra files");
 				nameColumn.getColumn().pack();
 				nameColumn.setLabelProvider(new CellLabelProvider() {
-					
+
 					@Override
 					public void update(ViewerCell cell) {
 						Object element = cell.getElement();
-						
+
 						if (element instanceof File) {
 							File f = (File) element;
 							cell.setText(f.getName());
@@ -202,43 +216,43 @@
 						}
 					}
 				});
-				
+
 				treeViewer.setInput(files);
 				for (int i = 0; i < files.length; i++) {
 					treeViewer.getTable().getItem(i).setChecked(selectedFiles.get(files[i]));
 				}
-				
+
 				Button selectAllButton = new Button(comp, SWT.PUSH);
 				selectAllButton.setText("Select All");
 				selectAllButton.addSelectionListener(new SelectionListener() {
-					
+
 					@Override
 					public void widgetSelected(SelectionEvent e) {
 						massSelect(true);
 					}
-					
+
 					@Override
 					public void widgetDefaultSelected(SelectionEvent e) {}
 				});
-				
+
 				Button clearAllButton = new Button(comp, SWT.PUSH);
 				clearAllButton.setText("Clear selection");
 				clearAllButton.addSelectionListener(new SelectionListener() {
-					
+
 					@Override
 					public void widgetSelected(SelectionEvent e) {
 						massSelect(false);
 					}
-					
+
 					@Override
 					public void widgetDefaultSelected(SelectionEvent e) {}
 				});
 			}
 		}
-		
+
 		return comp;
 	}
-	
+
 	protected void massSelect(boolean b) {
 		for (int i = 0; i < treeViewer.getTable().getItems().length; i++) {
 			treeViewer.getTable().getItem(i).setChecked(b);
@@ -247,12 +261,12 @@
 			selectedFiles.put(f, b);
 		}
 	}
-	
+
 	@Override
 	protected boolean isResizable() {
 		return true;
 	}
-	
+
 	@Override
 	protected void buttonPressed(int buttonId) {
 		if (buttonId == Dialog.OK) {
@@ -260,15 +274,15 @@
 		}
 		super.buttonPressed(buttonId);
 	}
-	
+
 	public File getZipFile() {
 		return zipFile;
 	}
-	
+
 	public LinkedHashMap<File, Boolean> getFileSelection() {
 		return selectedFiles;
 	}
-	
+
 	public HashSet<String> getIgnoreNames() {
 		HashSet<String> ignore = new HashSet<>();
 		for (File f : selectedFiles.keySet()) {
