将所选文件复制到项目目录

Copy selected file to Project directory

我是 JavaFx 的新手,我想知道如何将 Filechooser 已选择的文件复制到我的项目文件夹中。

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

您可以使用Files class复制文件,例如:

Files.copy(selectedFile.toPath, targetDirPath);

问题已经解决了,谢谢。

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);

为了让任何想要复制此方法的实际代码并在使用上面的代码时遇到一些麻烦的人更容易一些(因为其中一些根本不起作用):

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());
    }
}

您可以使用 selectedFile.toString()selectedFile.getName() 将其添加到文本字段中,或者通常只是获取您尝试通过文件选择器检索的文件的路径或名称。

您也可以在应用程序的其他地方使用 Files.copy(from.toFile(), to.toFile()); 如果您希望它在另一个按钮按下时发生,因为变量可以在 class 中的任何地方使用。如果您不需要这样做,只需在方法中创建局部变量即可。

Applemelon 的解决方案只是我没有调用 toFile() 方法 Files.copy(from.toFile(), to.toFile()); 给出了 无法解析方法错误 相反 Files.copy(from, to) 对我有用。



    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()); //gives a 'cannot resolve method error 
            Files.copy(from, to);
        }
    }