gpt4 book ai didi

java - 如何将文件路径转换为 ​​Java 1.7 中的有效文件路径

转载 作者:搜寻专家 更新时间:2023-11-01 01:54:49 25 4
gpt4 key购买 nike

使用 Java 1.6 文件路径可以由用户输入,然后我应用各种正则表达式来删除对平台无效的字符(例如 '?' 在 Windows 上无效),并检查路径长度以确保我们最终得到在尝试创建文件路径之前为操作系统提供有效的文件路径。

但是有两个问题:

  1. 弄清楚什么对每个平台有效或无效是一件痛苦的事情。
  2. 我正在根据平台的默认文件系统做出假设,但当然 OSX 系统可以写入非 mac 文件系统,例如 FAT32,在这种情况下,这些检查将无效。

所以我希望在 Java 7 中使用 NIO2 有更好的方法,但还没有找到解决方案,有吗?

最佳答案

根据您的预期结果(更正的字符串?无效的字符位置?异常?),这应该让您了解可以做什么:

import java.io.File;
import java.nio.file.InvalidPathException;
public class Test {
public static final void main(final String[] args) {
final String current = new File(".").toPath().toAbsolutePath().normalize().toFile().toString();
Test.correctPath(current);
Test.correctPath(current + "aValidExpression");
Test.correctPath(current + "aValidExpression?;:-&é");
Test.correctPath(current + "aValidExpr//ession?;:-&é");
Test.correctPath(current + "aValidExpre\\ssion?;:-&é");
}

public static final String correctPath(final String path) {
try {
final String returnValue = new File(path).toPath().toAbsolutePath().normalize().toFile().toString();
System.out.println(returnValue);
return returnValue;
} catch (final InvalidPathException e) {
System.err.println(e.getMessage());
final int errorIndex = e.getIndex();
final String newPath = path.substring(0, errorIndex - 1) + path.substring(errorIndex + 1);
return Test.correctPath(newPath);
}
}
}

希望对你有帮助。

关于java - 如何将文件路径转换为 ​​Java 1.7 中的有效文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12804888/

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