如何检查文件路径在java中是否无效/不存在
我的任务是以最终用户指定的路径保存文件(必须是绝对路径)。我目前面临三种不同的情况,如下所示:如何检查文件路径在java中是否无效/不存在,java,java-io,Java,Java Io,我的任务是以最终用户指定的路径保存文件(必须是绝对路径)。我目前面临三种不同的情况,如下所示: 路径名无效(无法创建)-对于ex,用户提供的路径名:sfg rgdf gfggdgfudf 路径名无效(但可以创建)-用于例如:C:\Parent\Child\孙子(此处C:\Parent存在,而Child\孙子不存在) 路径名对ex:C:\Parent\Test有效(即目录存在)- 对于第一种情况,我需要将文件保存在默认位置。 第二,我需要创建目录并保存文件。 最后,我将保存在指定的路径中 下面是我
//User input must be absolute path
String saveToFolder = "kut igeiguye jh";
String defaultFolder = "C:\\Parent\\Data";
try{
File file = new File(saveToFolder);
if(!file.exists()){
saveToFolder = defaultFolder;
}
file.mkdirs();
}catch(Exception e){
saveToFolder = defaultFolder;
}
//code to save data in path **saveToFolder**
kut igeiguye jh被大多数文件系统欣然接受。如果您不想在路径/文件名中使用空格,您已经需要自己检查有效性,例如使用正则表达式。1)对于第一种情况,请使用正则表达式确定路径是否有效
String regularExpression = "([a-zA-Z]:)?(\\[a-zA-Z0-9_-]+)+\\?" ; // this regex for windows. If you are running in linux then regex will be different.
Pattern pattern = Pattern.compile(regularExpression);
boolean isMatched = Pattern.matches(regularExpression,saveToFolder);
2) 使用第1种方法再次检查路径是否有效。如果其有效,请检查文件夹是否存在
File f = new File(saveToFolder);
if (f.exists() && f.isDirectory()) {
...
}
3) 第一种方法是否有效,第二种方法是否存在路径。感谢所有添加输入的人。我对我的代码做了一些修改。我的作业要求之一是我的程序必须以绝对路径作为输入。 使用下面的代码,我可以在案例1的默认位置保存数据;正在为案例2创建新文件夹并将文件保存在新创建的文件夹中;并将文件保存在案例3的指定路径中
String saveToFolder = "kut igeiguye jh";
String defaultFolder = "C:\\Parent\\Data";
try{
File file = new File(saveToFolder);
boolean dirCreated = file.mkdirs();
if(!dirCreated || (file.getParent().equals(null))){
saveToFolder = defaultFolder;
}
}catch(Exception e){
saveToFolder = defaultFolder;
}
System.out.println("save to folder : " +saveToFolder);
您可以使用isFile()来在exists()上生效。我还没有检查过所有的病例,但这应该对你有帮助
public static void checkPath(){
String saveToFolder = "file/User.txt";
String defaultFolder = "file/data/";
try{
File file = new File(saveToFolder);
if(!file.isFile()){
saveToFolder = defaultFolder;
System.out.println("File not found");
}
file.mkdirs();
}catch(Exception e){
saveToFolder = defaultFolder;
}
}
JavaNIO使这变得简单。无论目录是否已存在且已创建,该方法都会成功
try {
Files.createDirectories(Paths.get(saveToFolder));
}
catch (IOException e) {
System.err.println("Using default folder due to the following exception: " + e);
saveToFolder = defaultFolder;
}
如果您确实想检查用户是否输入了绝对路径,只需使用。为什么您认为
sfg rgdf gfggdgfufdf
是无效路径?这是有效的。它指向当前目录中名为sfg rgdf gfggdgfufdf
的目录。在这里查看Christopher Oezbek的回答,他列出了无效的路径字符,因此您可以筛选类似myFolderPath.contains(“:”)或myFolderPath.matches(“regex_代表无效的_字符”)的字符串这是平台相关的。am使用绝对路径,在这种情况下,kut igeiguye jh对我无效。