Java Netbeans无法在mac中读取utf8文件名

Java Netbeans无法在mac中读取utf8文件名,java,netbeans,encoding,utf-8,filenames,Java,Netbeans,Encoding,Utf 8,Filenames,我在eclipse上有一个项目,它的方法之一是从文件夹中读取文件列表。 当我从eclipse或从导出的jar运行它时,它很好,工作得很好 但是我在我的netbeans上有另一个项目,用于这个应用程序的GUI,其中包括导出的jar,它工作得很好,但是当我从netbeans运行或导出这个项目时,它无法读取非英语文件名,它正在将文件名转换为类似这样的内容 ???????? ???? ??? .mp3 我试图将-J-Dfile.encoding=UTF-8添加到netbeans.conf中 我还尝试

我在eclipse上有一个项目,它的方法之一是从文件夹中读取文件列表。 当我从eclipse或从导出的jar运行它时,它很好,工作得很好

但是我在我的netbeans上有另一个项目,用于这个应用程序的GUI,其中包括导出的jar,它工作得很好,但是当我从netbeans运行或导出这个项目时,它无法读取非英语文件名,它正在将文件名转换为类似这样的内容

???????? ???? ??? .mp3 
我试图将-J-Dfile.encoding=UTF-8添加到netbeans.conf中 我还尝试在netbeans项目属性中选择编码,但没有成功

下面是一些代码:

public SFile(String path, FileFilter filter) {
    File f = null;
    f = new File(path);
    directory = f.isDirectory();
    if (directory) {
        children = new ArrayList<SFile>();
        File[] ki = f.listFiles(filter); // here i see the ???? ????.mp3
        ArrayList<File> kids = new ArrayList<File>();
        Collections.addAll(kids, ki);
        Collections.sort(kids, comparator);
        for (File k : kids) {
            if (k.isDirectory() && k.listFiles(filter).length == 0) {
                continue;
            }
            children.add(new SFile(k.getAbsolutePath(), filter));
        }
    } else {
        // some more code...
    }
}
我的项目依赖项:

/Users/dima/Dev/RSLib/asm-3.1.jar
/Users/dima/Dev/RSLib/grizzly-framework-2.2.16.jar
/Users/dima/Dev/RSLib/grizzly-http-2.2.16.jar
/Users/dima/Dev/RSLib/grizzly-http-server-2.2.16.jar
/Users/dima/Dev/RSLib/grizzly-rcm-2.2.16.jar
/Users/dima/Dev/RSLib/gson-2.2.2.jar
/Users/dima/Dev/RSLib/javax.servlet-api-3.1-b05.jar
/Users/dima/Dev/RSLib/jersey-bundle-1.16.jar
/Users/dima/Dev/RSLib/jersey-core-1.16.jar
/Users/dima/Dev/RSLib/jersey-grizzly2-1.16.jar
/Users/dima/Dev/RSLib/jersey-server-1.16.jar
/Users/dima/Dev/RSLib/jsr311-api-1.1.1.jar
/Users/dima/Dev/RSLib/log4j-1.2.17.jar
/Users/dima/Dev/RSLib/jid3lib-0.5.4.jar
/Users/dima/Dev/RSLib/cling-distribution-2.0-alpha2/cling-mediarenderer-2.0-alpha2-standalone.jar
/Users/dima/Dev/RSLib/cling-distribution-2.0-alpha2/cling-workbench-2.0-alpha2-standalone.jar
/Users/dima/Dev/RSLib/cling-distribution-2.0-alpha2/core/seamless-http-1.0-alpha2.jar
/Users/dima/Dev/RSLib/cling-distribution-2.0-alpha2/core/seamless-util-1.0-alpha2.jar
/Users/dima/Dev/RSLib/cling-distribution-2.0-alpha2/core/seamless-xml-1.0-alpha2.jar
/Users/dima/Dev/RSLib/cling-distribution-2.0-alpha2/support/cling-support-2.0-alpha2.jar
/Users/dima/Dev/RSLib/cling-distribution-2.0-alpha2/core/cling-core-2.0-alpha2.jar
/Users/dima/Dev/RSLib/MpegAudioSPI1.9.5/mp3spi1.9.5.jar
/Users/dima/Dev/RSLib/MpegAudioSPI1.9.5/lib/jl1.0.1.jar
/Users/dima/Dev/RSLib/MpegAudioSPI1.9.5/lib/tritonus_share.jar
如果您使用的是java 7列表文件,则报告mac OS X上的文件已损坏-请参阅和此处的链接。如果更新不修复它,你应该考虑或查看。 我希望看到您在ListFileFilter中传递的筛选器

如果您在java 7上,mac OS X上报告的文件已损坏-请参阅和此处的链接。如果更新不修复它,你应该考虑或查看。

我希望看到您在ListFileFilter中传递的筛选器

您正在读取文件名列表,然后在GUI中显示它们吗?如果是这样,让我们看看显示代码。不,我没有显示它们,我用递增ID将所有文件索引到hashmap,当我停止调试时,我看到非英语文件名为??????。mp3和java无法读取它们。我看到非英语文件名为??????。mp3你在哪里看到它们?在某个地方?在值班吗?在“输出”窗格中,查看读取文件名的实际代码也很有用。我在调试时看到它,有一个字符串路径一个很好的字符串路径,英语和我创建一个文件f,并执行一个列表文件,在那里,当我观看返回的数组时,非英语的是。mp3,我更新了我的问题,添加了代码。您正在读取文件名列表,然后在GUI中显示它们吗?如果是这样,让我们看看显示代码。不,我没有显示它们,我用递增ID将所有文件索引到hashmap,当我停止调试时,我看到非英语文件名为??????。mp3和java无法读取它们。我看到非英语文件名为??????。mp3你在哪里看到它们?在某个地方?在值班吗?在“输出”窗格中,查看读取文件名的实际代码也很有用。我在调试时看到,有一个字符串路径一个很好的字符串路径,english和我创建了一个文件f,并在其中创建了一个listFiles,在那里,当我观看返回的数组时,非英语的是。mp3,我更新了我的问题,添加了代码。奇怪的事情,当我像你在main方法中所说的那样使用nio时,它当前在eclipse上工作,但当我在代码中使用它时,它也会返回????????。mp3,有什么想法吗?@DimaGoltsman:你有没有试用最新的Java1.7?另外,请务必发布所有修改路径名的代码,我怀疑您或您的依赖项正在使用默认编码调用字符串构造函数安装JDKu21,但samei刚刚注意到在JFileChooser本身中,它也是未知的符号,而不是真正的文件名…@DimaGoltsman:请删除javax.servlet-api-3.1-b05.jar-它会导致各种疯狂行为-可能是原因。可能您应该继续删除类路径中的其他JAR-请阅读:。你这么做是因为没有在netbeans中设置服务器?继续设置服务器!奇怪的是,当我像你在main方法中所说的那样使用nio时,它当前在eclipse上工作,但当我在代码中使用它时,它也会返回????????。mp3,有什么想法吗?@DimaGoltsman:你有没有试用最新的Java1.7?另外,请务必发布所有修改路径名的代码,我怀疑您或您的依赖项正在使用默认编码调用字符串构造函数安装JDKu21,但samei刚刚注意到在JFileChooser本身中,它也是未知的符号,而不是真正的文件名…@DimaGoltsman:请删除javax.servlet-api-3.1-b05.jar-它会导致各种疯狂行为-可能是原因。可能您应该继续删除类路径中的其他JAR-请阅读:。你这么做是因为没有在netbeans中设置服务器?继续设置服务器!
/Users/dima/Dev/RSLib/asm-3.1.jar
/Users/dima/Dev/RSLib/grizzly-framework-2.2.16.jar
/Users/dima/Dev/RSLib/grizzly-http-2.2.16.jar
/Users/dima/Dev/RSLib/grizzly-http-server-2.2.16.jar
/Users/dima/Dev/RSLib/grizzly-rcm-2.2.16.jar
/Users/dima/Dev/RSLib/gson-2.2.2.jar
/Users/dima/Dev/RSLib/javax.servlet-api-3.1-b05.jar
/Users/dima/Dev/RSLib/jersey-bundle-1.16.jar
/Users/dima/Dev/RSLib/jersey-core-1.16.jar
/Users/dima/Dev/RSLib/jersey-grizzly2-1.16.jar
/Users/dima/Dev/RSLib/jersey-server-1.16.jar
/Users/dima/Dev/RSLib/jsr311-api-1.1.1.jar
/Users/dima/Dev/RSLib/log4j-1.2.17.jar
/Users/dima/Dev/RSLib/jid3lib-0.5.4.jar
/Users/dima/Dev/RSLib/cling-distribution-2.0-alpha2/cling-mediarenderer-2.0-alpha2-standalone.jar
/Users/dima/Dev/RSLib/cling-distribution-2.0-alpha2/cling-workbench-2.0-alpha2-standalone.jar
/Users/dima/Dev/RSLib/cling-distribution-2.0-alpha2/core/seamless-http-1.0-alpha2.jar
/Users/dima/Dev/RSLib/cling-distribution-2.0-alpha2/core/seamless-util-1.0-alpha2.jar
/Users/dima/Dev/RSLib/cling-distribution-2.0-alpha2/core/seamless-xml-1.0-alpha2.jar
/Users/dima/Dev/RSLib/cling-distribution-2.0-alpha2/support/cling-support-2.0-alpha2.jar
/Users/dima/Dev/RSLib/cling-distribution-2.0-alpha2/core/cling-core-2.0-alpha2.jar
/Users/dima/Dev/RSLib/MpegAudioSPI1.9.5/mp3spi1.9.5.jar
/Users/dima/Dev/RSLib/MpegAudioSPI1.9.5/lib/jl1.0.1.jar
/Users/dima/Dev/RSLib/MpegAudioSPI1.9.5/lib/tritonus_share.jar