gpt4 book ai didi

Java file.getPath() 返回语言修改路径

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:25:31 25 4
gpt4 key购买 nike

我需要用

fileChooser.getSelectedFile()

方法但是它总是返回语言修改路径,因为一些目录在 osX 中被翻译。例如,文件夹“/Downloads”被翻译成我的系统语言“/Stiahnuté”,但实际路径是“/Downloads”

返回:

/Users/John/Stiahnuté

期待

/Users/John/Downloads

如果我选择了一些子目录,那么 fileChooser.getSelectedFile() 会再次返回正确的路径。看起来总是只翻译路径中的最后一个目录

/Users/John/Downloads/subDirectory

代码:

saveButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter(new FolderFilter());
fileChooser
.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if (fileChooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();
System.out.println("save path: "
+ selectedFile.getPath());
doSomething(selectedFile);
}
}
});

更新:

我做了很少的解决方法,但它不是完美的解决方案。但是它对我有用。

JFileChooser fileChooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"Directories", "dir");
fileChooser.setFileFilter(filter);
if (fileChooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();
File newDir = new File(selectedFile.getPath());
if (!newDir.exists()) {
newDir.mkdir();
}
doSomething();
}

最佳答案

我可以在使用 Java 1.8.0_66 的 Mac OS X 10.11.4 上重现该问题。对我来说,这看起来像是 JFileChooser 实现中的错误(或至少是意外行为)。您可以针对该问题打开错误报告。

answer explaining to use FileDialog to get a operating system native file chooser 的帮助下和另一个 answer about using it to select directories我找到了以下解决方法:

final Frame parent = …; // can be null

System.setProperty("apple.awt.fileDialogForDirectories", "true");
final FileDialog fileDialog = new FileDialog(parent);
fileDialog.setVisible(true);
System.setProperty("apple.awt.fileDialogForDirectories", "false");

final File selectedDirectory = new File(fileDialog.getDirectory(), fileDialog.getFile());
System.out.println(selectedDirectory);
System.out.println(selectedDirectory.exists());

请注意,使用 "apple.awt.fileDialogForDirectories" 当然是平台特定的,不适用于其他操作系统。

关于Java file.getPath() 返回语言修改路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36993169/

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