当前位置: 首页 > 知识库问答 >
问题:

Java GetFile在使用SetFile后返回不正确的文件名

滕弘新
2023-03-14
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(),我将获得sexakaxvivile).mp3-在这里它应该返回我选择保存到的文件的名称abc.mp3

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

共有1个答案

司马建柏
2023-03-14

我在使用Java1.7.0_21时也遇到了同样的问题。似乎只要您选择的文件名或路径比您以前用setFile()设置的文件名或路径短,那么新文件就会作为directory(!)返回by getDirectory()和getFile()返回前一个文件名的其余部分。在使用Java1.6的时候,它按照预期工作,所以我猜这是1.7中的一个bug。

编辑:
固定在:

  • Java 7U60B01
    (JDK-8024349:FileDialog getFile在以前的setFile之后返回损坏的字符串)
    -->早期访问版本下载
  • Java 8(JDK-8021943)
 类似资料:
  • 该文件不被命名为“test.xlsx”,而是被命名为“download”,并且不被识别为Excel文件。 任何帮助都很感激。

  • 问题内容: def size_of_dir(dirname): print(“Size of directory: “) print(os.path.getsize(dirname)) 是有问题的代码。dirname是一个目录,其中包含 130个 文件,每个文件约 1kb 。当我调用此函数时,它返回 4624 ,这 不是 目录的大小…为什么? 问题答案: 此值(4624B)代表的大小 文件 是 描

  • 我正在使用postgis计算两个地理坐标之间的距离。 它返回给我53536.743496517米,大约等于54公里,但实际距离是103公里,我通过http://boulter.com/gps/distance/ 我在询问中是否做错了什么?

  • 我正在尝试在代码中使用NSPredicate搜索名称。搜索工作正常,但不会返回适当的结果。当我搜索一个名称(例如“Colin”)时,它会返回表中的所有其他名称或另一个名称(例如“Mike”),但如果我输入一个不存在的随机字符串,它会返回:“找不到结果”。当我在搜索栏中键入一个名字(例如Lisa)时,我希望它能找到这个名字(Lisa)并返回它,但它没有这样做 这是我的代码: 自己name返回表中的所

  • 在ansible 2.2.0.0、2.2.1.0和2.1.4.0上测试 我有一个清单脚本,它在运行时返回这个json(为了示例起见,最小化了): 我写的剧本是用来部署应用程序的。库存中的VAR对于组来说是唯一的,即每个服务都有自己的lb池和http端口。另外,一台主机上可以有多个应用程序。以下是剧本喜欢的内容: 的工作原理是ansible部署在为componentA-service_ci列出的主机

  • 本文向大家介绍如果文件名是UTF-8,则使PHP pathinfo()返回正确的文件名,包括了如果文件名是UTF-8,则使PHP pathinfo()返回正确的文件名的使用技巧和注意事项,需要的朋友参考一下 除Latin-1外,大多数核心PHP函数均不处理字符集。但是在'pathinfo'之前,放置'setlocale'可以用于返回正确的文件名,即使它是UTF-8编码的。 默认情况下,它以'C'语