gpt4 book ai didi

java - file.getPath() 的相对路径

转载 作者:行者123 更新时间:2023-12-02 10:48:39 25 4
gpt4 key购买 nike

在此程序中,我尝试选择一个文件并读取该文件的项目的相对路径

        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:\Users\151\eclipse-workspace\FlexiRentGui\

我正在 eclipse ide 中运行该程序

当我选择C:\Users\151\eclipse-workspace\FlexiRentGui\res\1.jpg

而不是打印相对路径“/res/1.jpg”

它仍然打印绝对路径C:\Users\151\eclipse-workspace\FlexiRentGui\res\1.jpg

最佳答案

您需要获取当前目录/项目根目录的 URI,然后使用 java.net.URI.relativize()方法来查找所选文件相对于项目根目录的相对路径。像这样的:new File(cwd).toURI().relativize(file.toURI()).getPath() .

这是伪代码:

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

}

关于java - file.getPath() 的相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52354348/

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