Java JFileChooser将文件名传递为null
我一直在用Java编写一个音频/视频转换器。除了JFileChooser之外,其他一切都运行顺利。(我通常使用AWT FileDialog来选择文件,但在这个项目中不能使用它,因为我听说FileDialog依赖于操作系统,请告知。) 以下是我的文件选择过程的工作原理:Java JFileChooser将文件名传递为null,java,string,swing,file,jfilechooser,Java,String,Swing,File,Jfilechooser,我一直在用Java编写一个音频/视频转换器。除了JFileChooser之外,其他一切都运行顺利。(我通常使用AWT FileDialog来选择文件,但在这个项目中不能使用它,因为我听说FileDialog依赖于操作系统,请告知。) 以下是我的文件选择过程的工作原理: 我已经定义了一个公共字符串fileLocn。fileLocn将包含所选文件的位置 我的程序使用Swing。有一个JButton将打开JFIleChooser,称为FilePicker。下面是FilePicker的代码,如下所示:
- 我已经定义了一个公共字符串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); }
- 文件选择器选择文件并将其位置提供给字符串fileLocn,该字符串用作另一个文件的位置。请注意,filelocation文本字段是装饰性的,未在主代码中使用
(顺便说一句,保证对相关答案进行投票,我会在积分中提到你:)你得到的是
JFileChooser
的name
属性,而不是选中的文件
而不是
fileLocn=FilePicker.getCurrentDirectory().toString()+"\\"+FilePicker.getName()
你会发现
fileLocn=file.getPath();
将以平台无关的方式执行您想要的操作…请记住,只有Windows使用\
作为分隔符,在基于Mac或Unix的系统上执行此操作将导致无法结束的问题。如果确实必须提供分隔符,可以在Windows上使用/
,但通常最好使用File.separator
根据评论更新
基本上,您需要从扩展名中提取名称,您可以执行以下操作
String fileWithoutExt = fileLocn.substring(0, fileLocn.indexOf("."));
While将去掉最后一个
之后的所有内容,包括最后一个
因此,如果您有一个值为
FQSEMI.mp4
的字符串
,它将返回FQSEMI
,您将获得JFileChooser
的名称
属性,而不是所选的文件
而不是
fileLocn=FilePicker.getCurrentDirectory().toString()+"\\"+FilePicker.getName()
你会发现
fileLocn=file.getPath();
将以平台无关的方式执行您想要的操作…请记住,只有Windows使用\
作为分隔符,在基于Mac或Unix的系统上执行此操作将导致无法结束的问题。如果确实必须提供分隔符,可以在Windows上使用/
,但通常最好使用File.separator
根据评论更新
基本上,您需要从扩展名中提取名称,您可以执行以下操作
String fileWithoutExt = fileLocn.substring(0, fileLocn.indexOf("."));
While将去掉最后一个
之后的所有内容,包括最后一个
因此,如果您有一个值为
FQSEMI.mp4
的字符串
,它将返回FQSEMI
,您将获得JFileChooser
的名称
属性,而不是所选的文件
而不是
fileLocn=FilePicker.getCurrentDirectory().toString()+"\\"+FilePicker.getName()
你会发现
fileLocn=file.getPath();
将以平台无关的方式执行您想要的操作…请记住,只有Windows使用\
作为分隔符,在基于Mac或Unix的系统上执行此操作将导致无法结束的问题。如果确实必须提供分隔符,可以在Windows上使用/
,但通常最好使用File.separator
根据评论更新
基本上,您需要从扩展名中提取名称,您可以执行以下操作
String fileWithoutExt = fileLocn.substring(0, fileLocn.indexOf("."));
While将去掉最后一个
之后的所有内容,包括最后一个
因此,如果您有一个值为
FQSEMI.mp4
的字符串
,它将返回FQSEMI
,您将获得JFileChooser
的名称
属性,而不是所选的文件
而不是
fileLocn=FilePicker.getCurrentDirectory().toString()+"\\"+FilePicker.getName()
你会发现
fileLocn=file.getPath();
将以平台无关的方式执行您想要的操作…请记住,只有Windows使用\
作为分隔符,在基于Mac或Unix的系统上执行此操作将导致无法结束的问题。如果确实必须提供分隔符,可以在Windows上使用/
,但通常最好使用File.separator
根据评论更新
基本上,您需要从扩展名中提取名称,您可以执行以下操作
String fileWithoutExt = fileLocn.substring(0, fileLocn.indexOf("."));
While将去掉最后一个
之后的所有内容,包括最后一个
因此,如果您有一个值为
FQSEMI.mp4
的字符串
,当您检索JFileChooser
对象本身时,它将返回FQSEMI
。相反,您需要选定文件的名称。要获取此信息,请调用filePicker.getSelectedFile().getName()
。更好的方法是获取文件的路径,而不是通过连接字符串来构造路径:
fileLocn = filePicker.getSelectedFile().getPath();
(注意,在Java中,我们倾向于以小写字符开始命名变量,以避免与类混淆。这也将有助于语法高亮显示,如本网站上使用的高亮显示。)当您都
filePicker.getName()
时,您将检索JFileChooser
对象本身的名称。相反,您需要选定文件的名称。要获取此信息,请调用filePicker.getSelectedFile().getName()
。更好的方法是获取文件的路径,而不是通过连接字符串来构造路径:
fileLocn = filePicker.getSelectedFile().getPath();
(请注意,在Java中,我们倾向于以小写字符开头命名变量,以避免与类混淆。这也有助于语法高亮显示,如本网站上使用的高亮显示。)当您都
filePicker.getName()
时,您将检索