Java 如何将文件路径转换为短(8.3)路径?

Java 如何将文件路径转换为短(8.3)路径?,java,Java,有没有办法直接通过JavaAPI(即不使用命令行)将长文件路径转换为短文件路径 例如,它应该将C:\Program Files\Java转换为C:\Progra~1\Java,您可以使用本文中所述的示例 使用JNA的Java import com.sun.jna.Native; import com.sun.jna.platform.win32.Kernel32; public class LongToShort { public static String GetShortPath

有没有办法直接通过JavaAPI(即不使用命令行)将长文件路径转换为短文件路径

例如,它应该将
C:\Program Files\Java
转换为
C:\Progra~1\Java

,您可以使用本文中所述的示例

使用JNA的Java

import com.sun.jna.Native;
import com.sun.jna.platform.win32.Kernel32;

public class LongToShort {

    public static String GetShortPathName(String path) {
        char[] result = new char[256];
        Kernel32.INSTANCE.GetShortPathName(path, result, result.length);
        return Native.toString(result);
    }

    // usage: java LongToShort "C:\Program Files (x86)\Java\jdk1.6.0_45"
    public static void main(String[] args) {
        System.out.println(GetShortPathName(args[0]));
    }
}

不重复的可能重复,我正在寻找没有命令行的解决方案。要转换的路径是“C:\Program Files\Java”,类似于C:\Program~\JavaUhm。。。为什么?哪个API/工具现在不能处理“长”文件名?