使用 SetFile 后 Java GetFile 返回错误的文件名

2023-12-22

我有一些Java代码:

public static String getSaveFilePath(String title2)
  {
  FileDialog fd = new FileDialog(new Frame(), "Save As...", 1);
    fd.setFilenameFilter(new FilenameFilter() {
      public boolean accept(File dir, String name) {
        return name.endsWith(".mp3");
      }
    });
    fd.setFile(title2 + ".mp3");
    fd.setVisible(true);
    String str3 = fd.getFile();
    String str4 = fd.getDirectory();
    if (str4 == null) return null;
    str3 = str3.replace(".mp3", "");
    str3 = str3 + ".mp3";
    String str5 = str3;
    File localFile = new File(str4, str5);
    return localFile.getPath();
}

问题是当我使用setFile()将文件名设置为

NBA - In the Zone P.L. (Video by JESSExAKAxViCiOUS)

在显示对话框之前以及显示对话框时,我将文件另存为abc.mp3我用getFile()再次,我得到SExAKAxViCiOUS).mp3- 它应该返回我选择保存到的文件的名称,abc.mp3.

有人可以告诉我我在这里做错了什么吗?另外,如果您有更好的跨平台解决方案来显示保存文件对话框,请与我分享。


我在使用 Java 1.7.0_21 时遇到同样的问题。似乎每当您选择的文件名或路径比您之前使用 setFile() 设置的文件名或路径短时,新文件将由 getDirectory() 作为目录(!)返回,并且 getFile() 返回前一个文件的其余部分文件名。 当使用Java 1.6时,它按预期工作,所以我猜这是1.7中的一个错误。

Edit:
固定于:

  • Java 7u60b01 http://download.java.net/jdk7u60/changes/jdk7u60-b01.html
    (JDK-8024349:FileDialog getFile 在上一个 setFile 之后返回损坏的字符串 http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8024349)
    --> 抢先体验版本下载 https://jdk7.java.net/download.html
  • Java 8 (JDK-8021943 http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8021943)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 SetFile 后 Java GetFile 返回错误的文件名 的相关文章

随机推荐