我从用户那里收到一个字符串,该字符串应该用作将内容保存到文件的位置。此字符串应包含足够的信息,例如目录 + 文件名。
我的问题是,如何检查提供的字符串是否是将内容保存到文件的有效路径(至少在理论上)?
无论是否创建目录,或者是否可以正确访问该位置本身都无关紧要。我只对检查提供的字符串的结构感兴趣。
我应该如何进行?我正在考虑创建一个 File
对象,然后提取它的 URI
。有没有更好的办法?
最佳答案
您可以使用 File.getCanonicalPath() 根据当前操作系统规则进行验证。
import java.io.File;
import java.io.IOException;
public class FileUtils {
public static boolean isFilenameValid(String file) {
File f = new File(file);
try {
f.getCanonicalPath();
return true;
}
catch (IOException e) {
return false;
}
}
public static void main(String args[]) throws Exception {
// true
System.out.println(FileUtils.isFilenameValid("well.txt"));
System.out.println(FileUtils.isFilenameValid("well well.txt"));
System.out.println(FileUtils.isFilenameValid(""));
//false
System.out.println(FileUtils.isFilenameValid("test.T*T"));
System.out.println(FileUtils.isFilenameValid("test|.TXT"));
System.out.println(FileUtils.isFilenameValid("te?st.TXT"));
System.out.println(FileUtils.isFilenameValid("con.TXT")); // windows
System.out.println(FileUtils.isFilenameValid("prn.TXT")); // windows
}
}