relative path for file.getPath()
本问题已经有最佳答案,请猛点这里访问。
在这个程序中,我试图选择一个文件并读取这个文件的项目的相对路径。
1 2 3 4 5 6 7 8 | FileChooser photo = new FileChooser(); Stage stage = new Stage();stage.setTitle("File Chooser Sample"); openButton.setOnAction((final ActionEvent t) -> { File file = photo.showOpenDialog(stage); if (file != null) { System.out.println(file.getPath());; } }); |
我的项目路径是C:users151eclipse工作区flexierntgui
我在Eclipse IDE中运行这个程序
当我选择C:users151eclipse workspaceflexierntgui
es1.jpg
而不是打印相对路径"/res/1.jpg"
它仍然打印出绝对路径C:users151eclipse workspaceflexierntgui
es1.jpg
您需要获取当前目录/项目根目录的URI,然后使用
以下是PSEDO代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | package org.test; import java.io.File; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.GridPane; import javafx.stage.FileChooser; import javafx.stage.Stage; public class FileChooserDemo extends Application { public FileChooserDemo() {}; public static void main(String[] args) throws ClassNotFoundException { FileChooserDemo.launch(FileChooserDemo.class); } public void chooseFileAndPrintRelativePath() { FileChooser photo = new FileChooser(); Stage stage = new Stage(); stage.setTitle("File Chooser Sample"); Button openButton = new Button("Choose file"); openButton.setOnAction((t) -> { File file = photo.showOpenDialog(stage); if (file != null) { String cwd = System. getProperty("user.dir"); System.out.println(new File(cwd).toURI().relativize(file.toURI()).getPath()); } }); //Creating a Grid Pane GridPane gridPane = new GridPane(); //Setting size for the pane gridPane.setMinSize(400, 200); gridPane.add(openButton, 0, 0); Scene scene = new Scene(gridPane); stage.setScene(scene); stage.show(); } @Override public void start(Stage primaryStage) throws Exception { chooseFileAndPrintRelativePath(); } } |
您可以避免使用旧的
要执行此操作,只需获取当前工作目录:
1 2 | var pwd = Paths.get("").toAbsolutePath(); var relative = pwd.relativize(Paths.get("someOtherPath")); |
我希望这有帮助。