在我的Java应用程序中,我将文件重命名为String参数中提供的文件名.有一种方法
boolean OKtoRename(String oldName, String newName)
Run Code Online (Sandbox Code Playgroud)
它基本上检查newName是否已被其他文件占用,因为我不想埋没现有文件.
现在我想到,newName String可能不会表示有效的文件名.所以我想把这个检查添加到方法中:
if (new File(newName).isFile()) {
return false;
}
Run Code Online (Sandbox Code Playgroud)
这显然不是正确的方法,因为在大多数情况下newFile尚不存在,因此虽然它是 OKtoRename,但该函数返回false.
我在想,有没有一种方法(我知道有没有针对java.io.File的对象)canExist()吗?或者,我将不得不诉诸正则表达式来确保NEWFILE String不包含无效字符(如?,*," :)?我不知道是否有可能是某个地方隐藏在JDK的函数,将一个字符串告诉我可能表示有效的文件名.
如何在不调用的情况下测试给定方法是否会抛出异常(取决于传递的对象)?
例如:
public static boolean isAllowed(SomeObject obj)
{
try
{
myMethod(obj);
return true;
}
catch(Exception ex)
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
但是上面的方法会执行MyMethod(),我怎么能在java中实现这个呢?
编辑:
实际上,我想这样做来验证文件名.请参阅:在Windows上验证文件名
如何确定给定字符串是否是有效的Windows文件名?我正在考虑一些函数,我可以给一个字符串,并返回一个布尔值.它应该检查不允许的字符(<>:"/\|?*)和保留字(CON,PRN等等).
isValidWindowsFilename('readme.txt'); // true
isValidWindowsFilename('foo/bar'); // false
isValidWindowsFilename('CON'); // false
Run Code Online (Sandbox Code Playgroud)
我找到了一个MSDN参考,准确描述了什么是有效的:http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v = vs.85).aspx
我也为Java找到了同样的问题,答案可以满足我的需要,除了它是Java而不是PHP:在Windows上验证文件名