gpt4 book ai didi

java - 如何在javafx中复制并保存用户使用FileChooser选择的文件

转载 作者:行者123 更新时间:2023-12-01 09:45:05 25 4
gpt4 key购买 nike

我正在制作程序,用户可以使用 FileChooser 选择图像并将其显示在程序中。但我想将所有图像保存在我的文件夹中。我想在那里存储所有图像。那么,如果用户选择桌面上的图像来复制该图像并将其粘贴到我的文件夹中,是否有任何选项?

最佳答案

嗯,我不完全确定您的实现以及如何在程序中呈现打开的图像,但从这里获取oracles示例:http://docs.oracle.com/javafx/2/ui_controls/file-chooser.htm

使用javaNIO让程序将选定的文件复制到某个方向相当简单:

private void openFile(File file) {
try {
File dest = new File("C:\\Users\\yourProfile\\Desktop"); //any location
Files.copy(file.toPath(), dest.toPath(), StandardCopyOption.REPLACE_EXISTING);
} catch (IOException ex) {
Logger.getLogger(
FileChooserSample.class.getName()).log(
Level.SEVERE, null, ex
);
}
}

您可以使用我之前链接的示例应用程序对此进行测试:

import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.stage.FileChooser;
import javafx.stage.Stage;

public final class FileChooserSample extends Application {

private Desktop desktop = Desktop.getDesktop();

@Override
public void start(final Stage stage) {
stage.setTitle("File Chooser Sample");

final FileChooser fileChooser = new FileChooser();

final Button openButton = new Button("Open a Picture...");
final Button openMultipleButton = new Button("Open Pictures...");

openButton.setOnAction(
new EventHandler<ActionEvent>() {
@Override
public void handle(final ActionEvent e) {
File file = fileChooser.showOpenDialog(stage);
if (file != null) {
openFile(file);
}
}
});

openMultipleButton.setOnAction(
new EventHandler<ActionEvent>() {
@Override
public void handle(final ActionEvent e) {
List<File> list =
fileChooser.showOpenMultipleDialog(stage);
if (list != null) {
for (File file : list) {
openFile(file);
}
}
}
});


final GridPane inputGridPane = new GridPane();

GridPane.setConstraints(openButton, 0, 0);
GridPane.setConstraints(openMultipleButton, 1, 0);
inputGridPane.setHgap(6);
inputGridPane.setVgap(6);
inputGridPane.getChildren().addAll(openButton, openMultipleButton);

final Pane rootGroup = new VBox(12);
rootGroup.getChildren().addAll(inputGridPane);
rootGroup.setPadding(new Insets(12, 12, 12, 12));

stage.setScene(new Scene(rootGroup));
stage.show();
}

public static void main(String[] args) {
Application.launch(args);
}

private void openFile(File file) {
try {
desktop.open(file);
File dest = new File("C:\\Users\\yourprofile\\Desktop");
Files.copy(file.toPath(), dest.toPath(), StandardCopyOption.REPLACE_EXISTING);
} catch (IOException ex) {
Logger.getLogger(
FileChooserSample.class.getName()).log(
Level.SEVERE, null, ex
);
}
}
}

您只需修改目录即可,但请注意,复制文件的方法和实现有很多种,具体取决于您使用的 java 版本以及是否使用其他库(例如 apache io)。

如果您使用标准文件方法,其他可能有用的链接:

JavaPractices JavaCodeGeek StackOverflow

希望无论如何都能有所帮助:)祝你的程序好运。

关于java - 如何在javafx中复制并保存用户使用FileChooser选择的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38122519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com