小编典典

Mac上的JFileChooser无法看到以中文字符命名的文件?

java

在Intellij中运行时,该程序运行良好(可以看到中文命名的文件)。

我将其内置到一个.jar文件中。执行了jar JFileChooser文件,看不到那些文件。

我在Windows中尝试了jar,它可以正常工作。


阅读 271

收藏
2020-11-26

共1个答案

小编典典

在Mac OS X 10.8.2上为我运行的文件:

import java.io.File;
import javax.swing.JFileChooser;
public class JFileChooserTest
{
  public static void main(String[] args)
  {
    System.out.println("file.encoding=" + System.getProperty("file.encoding"));
    String path;

    if(args.length > 0)
      path = args[0];
    else
      path = System.getProperty("user.dir", ".");

    File dir = new File(path);

    JFileChooser jfc = new JFileChooser(dir);
    int result = jfc.showOpenDialog(null);

    switch(result) {
      case JFileChooser.CANCEL_OPTION:
        System.out.println("User cancelled OPEN dialog.");
        break;
      case JFileChooser.APPROVE_OPTION:
        System.out.println("User chose file: " + jfc.getSelectedFile());
        break;
      case JFileChooser.ERROR_OPTION:
        System.out.println("User encountered an error");
        break;
     default:
       System.out.println("Confused");
       break;
    }

    System.exit(0);
  }
}

这是一个示例运行:

$ java -showversion JFileChooserTest 
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)

file.encoding=UTF-8
User chose file: /.../测试文件.txt

这是另一个示例运行:

$ java -showversion -Dfile.encoding=ISO-8859-1 JFileChooserTest 
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)

file.encoding=ISO-8859-1
User chose file: /.../????.txt

在这两种情况下,文件选择对话框均会正确显示文件名(测试文件.txt)。

请注意,using java.awt.FileDialog将为您提供大多数Mac
OS用户用来查看的特定于平台的文件对话框。尽管它不是严格意义上的Swing(并且具有很小的功能集),但它可能比JFileChooser诸如OPEN和SAVE对话框之类的要优越。(它也显示汉字,而我的系统没有问题)。

2020-11-26