2016-04-26 14 views
0

Ich bin neu in JavaFx, ich frage mich, wie man eine Datei, die bereits von Filechooser ausgewählt wurde, in meinen Projektordner kopiert.Kopiere die ausgewählte Datei in das Projektverzeichnis

public void ButtonAction(ActionEvent event) { 
    FileChooser fc = new FileChooser(); 
    fc.setTitle("attach a file"); 
    File selectedFile = fc.showOpenDialog(null); 

    if (selectedFile != null) { 
     file1.setText("selectionned file : " + selectedFile.getAbsolutePath()); 

     //the code to copy the selected file goes here// 

    } else{ 
     file1.setText("no file attached"); 
    } 

Antwort

1

können Sie die Files-Klasse verwenden, um Dateien zu kopieren, z.B .:

Files.copy(selectedFile.toPath, targetDirPath); 
1

Problem behoben dank sowieso.

Path from = Paths.get(selectedFile.toURI()); 
     Path to = Paths.get("pathdest\\file.exe"); 
     CopyOption[] options = new CopyOption[]{ 
       StandardCopyOption.REPLACE_EXISTING, 
       StandardCopyOption.COPY_ATTRIBUTES 
     }; 
     Files.copy(from, to, options); 
0

Um es ein wenig einfacher für jedermann zu machen sucht den eigentlichen Code dieser Methode zu kopieren und ein wenig Mühe mit dem obigen Code mit (da einige es einfach nicht funktionieren):

private Path to; 
private Path from; 
private File selectedFile; 

private void handleFileLocationSearcher() throws IOException { 
    FileChooser fc = new FileChooser(); 
    fc.setTitle("Attach a file"); 
    selectedFile = fc.showOpenDialog(null); 

    if (selectedFile != null) { 
     from = Paths.get(selectedFile.toURI()); 
     to = Paths.get("Your destination path" + selectedFile.getName()); 
     Files.copy(from.toFile(), to.toFile()); 
    } 
} 

Sie können selectedFile.toString() oder selectedFile.getName() verwenden, um es in ein Textfeld einzufügen oder einfach den Pfad oder Namen der Datei, die Sie über Dateiauswahl abrufen möchten, abzurufen.

Sie können auch Files.copy(from.toFile(), to.toFile()); woanders in Ihrer Anwendung verwenden, wenn Sie möchten, dass es bei einem anderen Tastendruck passiert, weil die Variablen überall in der Klasse verwendet werden können. Wenn Sie dies nicht tun müssen, erstellen Sie einfach die lokalen Variablen in der Methode.