Windows上的Java:阻止' /'用作分隔符的文件名中的斜杠

我必须根据提供给我的字符串创建一个文件。 对于此示例,假设文件名为“My file w / stuff.txt”。 当Java使用创建文件时
 File file = new File("My file w/ stuff.txt")
即使默认的窗口分隔符是
''
,它也假定
'/'
斜杠是文件分隔符。因此,未来对
file.getName()
的调用将返回
" stuff.txt"
。这会导致我的程序出现问题。 有什么方法可以防止这种行为吗?     
已邀请:
根据这个维基百科页面,Windows API将'/'视为等同于''。因此,即使您以某种方式设法在(例如)
File
对象中的路径名组件中嵌入“/”,Windows在某些时候也可能将其视为路径分隔符。 所以你最好的选择是: 让Windows像往常一样对待'/';即让它将字符视为路径名分隔符。 如上所述,但是向用户发出关于'/'的警告。 检查'/'和''字符,并拒绝两个文件名(即路径名组件)不能包含路径名分隔符。 (最好的最好取决于您的应用程序的详细信息;例如,您是否可以向输入伪造文件名的人报告问题。) 如果你试图将'/'与''区别对待,那么你就有可能产生比你解决的问题更多的问题;例如如果您的应用程序需要编写脚本。如果你静静地剥离一个或两个角色(或将它们变成别的东西),你就有可能产生更多的问题;例如意外的路径名冲突。 (我最初建议在带有%-escaped'/'字符的“file:”URL上使用
File(URL)
构造函数。但即使它在Java端工作,它也无法在Windows端工作。)     
如果正在为您(从外部源)提供字符串,则听起来不能阻止该字符串包含某些字符。如果你有某种GUI来创建字符串,那么你总是可以在那里限制它。否则,无论创建文件的方法是什么,都应检查斜杠并返回错误或按您认为合适的方式处理它。     
由于Windows文件名中不允许使用正斜杠或反斜杠,因此应从用于命名文件的字符串中清除它们。     
好吧,你怎么能阻止它成为文件夹分隔符?它是一个文件夹分隔符。如果您可以自己决定什么是文件分隔符,哪些不是文件夹分隔符,那么整个系统就会崩溃。     

要回复问题请先登录注册