java - JFileChooser 将文件名传递为 null

标签 java string swing file jfilechooser

我一直在用 Java 编写一个音频/视频转换器。除了 JFileChooser 之外,一切都运行顺利。 (我通常使用 AWT FileDialog 来选择文件,但不能在这个项目中使用它,因为我听说 FileDialog 是操作系统相关的 - 请建议。)

以下是我的文件选择过程的工作原理:

  • 我定义了一个公共(public)字符串 fileLocn。 fileLocn 将包含所选文件的位置。

  • 我的程序使用 Swing。有一个 JButton 可以打开 JFIleChooser,称为 FilePicker。 FilePicker 的代码如下:

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
    JFileChooser FilePicker=new JFileChooser();
    int returnVal = FilePicker.showOpenDialog(this);
    if (returnVal == JFileChooser.APPROVE_OPTION) {
    File file=FilePicker.getSelectedFile();
    formatpanel.setEnabled(true);
    fileLocn=FilePicker.getCurrentDirectory().toString()+"\\"+FilePicker.getName();
    filelocation.setText(fileLocn);
    }
    
  • FilePicker 选择文件并将其位置提供给字符串 fileLocn,该字符串用作另一个文件的位置。请注意,文件位置 TextField 是装饰性的,不在主代码中使用。

这就是问题出现的地方。 getCurrentDirectory() 命令工作正常,但 getName() 命令被传递为 null。因此,如果我在 C: 驱动器的“Videos”文件夹中选择文件 FQSEMI.mp4,它将显示为 C:\Videos\null,而不是所需的 C:\Videos\FQSEMI。

请指出我的代码有什么问题。谢谢。

(P.S.保证对相关答案投赞成票,我会在致谢名单中提及您:))

最佳答案

您将获取 JFileChoosername 属性,而不是所选的文件...

而不是...

fileLocn=FilePicker.getCurrentDirectory().toString()+"\\"+FilePicker.getName()

你会发现...

fileLocn=file.getPath();

将做你想做的事 - 以平台中立的方式...记住,只有 Windows 使用 \ 作为分隔符,在 Mac 或基于 Unix 的系统上执行此操作将导致问题不断。如果确实必须提供分隔符,则可以在 Windows 上使用 /,但通常最好使用 File.separator

根据评论进行更新

基本上,您需要从扩展名中提取名称,您可以执行类似的操作..

String fileWithoutExt = fileLocn.substring(0, fileLocn.indexOf("."));

While 将删除最后一个 . 之后的所有内容,包括最后一个 .

因此,如果您有一个值为 FQSEMI.mp4String,它将返回 FQSEMI

关于java - JFileChooser 将文件名传递为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22004233/

相关文章:

java - 我怎样才能到达 arraylist 中的对象

在线性时间内用 crt 连接 C 字符串

php - 字符串到数组返回参数中的数组

c++ - 反转字符串的递归函数

java - 我应该避免在 Java Swing 中使用 set(Preferred|Maximum|Minimum)Size 方法吗?

Java 多按钮

java - 使用 OpenCV 在 Java 中查找轮廓

java - 回答这些评论问题

java - 没有 XML 的 Android PreferenceActivity

java - 用于呈现未知行数的 JTable