gpt4 book ai didi

Windows 上的 Java : prevent '/' slash in file name from acting as a separator

转载 作者:可可西里 更新时间:2023-11-01 13:59:33 26 4
gpt4 key购买 nike

我必须根据提供给我的字符串创建一个文件。对于此示例,假设文件名为“My file w/stuff.txt”。当 Java 使用

创建文件时
 File file = new File("My file w/ stuff.txt")

即使默认的 Windows 分隔符是 '\',它也假定 '/' 斜杠是文件分隔符。因此,以后调用 file.getName() 将返回 "stuff.txt"。这会给我的程序带来问题。

有什么办法可以防止这种行为吗?

最佳答案

根据 this Wikipedia page ,Windows API 将“/”视为等同于“\”。因此,即使您以某种方式设法在(例如)File 对象的路径名组件中嵌入“/”,Windows 也有可能在某些时候将其视为路径分隔符。

所以你最好的选择是:

  • 让 Windows 像往常一样处理“/”;即让它将字符视为路径名分隔符。
  • 同上,但向用户发出有关“/”的警告。
  • 检查“/”和“\”字符,并拒绝同时指出文件名(即路径名组件)不能包含路径名分隔符。

(最好中的最好取决于您的应用程序的详细信息;例如,您是否可以向输入虚假文件名的人报告问题。)

如果您尝试以不同于“\”的方式对待“/”,您将冒着制造比解决更多问题的风险;例如如果您的应用程序需要编写脚本。如果您默默地剥离一个或两个字符(或将它们变成其他东西),则有可能会产生更多问题;例如意外的路径名冲突。

(我最初建议在带有 %-escaped '/' 字符的“file:”URL 上使用 File(URL) 构造函数。但即使这在 Java 端有效,它也赢了'在 Windows 端工作。)

关于Windows 上的 Java : prevent '/' slash in file name from acting as a separator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4845866/

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