gpt4 book ai didi

java - 如何使用 Java 在 Windows 中获取短文件名?

转载 作者:可可西里 更新时间:2023-11-01 12:43:24 25 4
gpt4 key购买 nike

如何使用 Java 在 Windows 中获取长文件名的短文件名?

我需要使用 Java(tm) 确定存储在 Windows 系统上的文件的短文件名。

最佳答案

自答

相关问题有相关答案。然而,我发布了这个解决方案,因为它使用 Java(tm) 代码而不需要外部库。欢迎为不同版本的 Java 和/或 Microsoft(R) Windows(tm) 提供其他解决方案。

主要概念

主要概念在于通过运行时类从 Java(tm) 调用 CMD:

cmd /c for %I in ("[long file name]") do @echo %~fsI

解决方案

在Windows 7系统上运行Java SE 7测试(为简洁起见减少了代码)。

    public static String getMSDOSName(String fileName)
throws IOException, InterruptedException {

String path = getAbsolutePath(fileName);

// changed "+ fileName.toUpperCase() +" to "path"
Process process =
Runtime.getRuntime().exec(
"cmd /c for %I in (\"" + path + "\") do @echo %~fsI");

process.waitFor();

byte[] data = new byte[65536];
int size = process.getInputStream().read(data);

if (size <= 0)
return null;

return new String(data, 0, size).replaceAll("\\r\\n", "");
}

public static String getAbsolutePath(String fileName)
throws IOException {
File file = new File(fileName);
String path = file.getAbsolutePath();

if (file.exists() == false)
file = new File(path);

path = file.getCanonicalPath();

if (file.isDirectory() && (path.endsWith(File.separator) == false))
path += File.separator;

return path;
}

关于java - 如何使用 Java 在 Windows 中获取短文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18893284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com