【问题标题】:Get valid path chars for current OS / Filter invalid chars from path string获取当前操作系统的有效路径字符/从路径字符串中过滤无效字符
【发布时间】:2016-03-29 17:50:10
【问题描述】:

我想检查包含路径的字符串是否合法。

什么不起作用:

  • 我可以使用正则表达式并替换特定操作系统(如 Windows)的无效字符;这仅适用于单个特定操作系统
  • 我可以使用 Java 7 的 NIO Paths.get() 并捕获异常,但这只会说明路径是否有效,我想删除无效字符。

我只在互联网上找到了执行上述操作之一的资源。很棒的是标准库中的 getInvalidChars() 之类的东西,它会给我一个系统相关的无效字符列表(或正好相反,getAllowedChars() 或类似的东西)。

Java 版本无关紧要。

提前致谢!

【问题讨论】:

  • 如果作为安慰,由 Paths.get() 生成的 InvalidPathException 确实会在其 getIndex() 方法上返回违规字符的位置。也许这可以作为(超慢)字符检查器的基础......
  • 我会检查它有多慢,它不一定要快。

标签: java cross-platform


【解决方案1】:

您可以使用System.getProperty("os.name") 获取操作系统。所以你可以这样做:

String os = System.getProperty("os.name").toLowerCase();
if (os.indexOf("win") >= 0)
    invalidChars("win");
else if (os.indexOf("mac") >= 0)
    invalidChars("mac");
else if (os.indexOf("linux") >= 0)
    invalidChars("linux");

invalidChars(String os) 函数将根据给定的操作系统删除无效字符。

【讨论】:

  • 谢谢,但我希望有一个适当的解决方案,我不必自己制作字符列表...
猜你喜欢
  • 1970-01-01
  • 2015-04-14
  • 2014-09-04
  • 1970-01-01
  • 2015-01-21
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多