如何检查文件路径是否 invalid/does 不存在于 java
how to check if the file path is invalid/does not exist in java
我的任务是在最终用户指定的路径中保存一个文件(必须是绝对路径)。我目前面临以下三种不同的情况:
- 路径名无效(无法创建)- 例如,用户提供的路径名:sfg rgdf gfggdgfudf
- 路径名无效(但可以创建)- for ex : C:\Parent\Child\GrandChildren(此处为 C:\Parent 存在,而 Child\GrandChildren 不存在。
- 路径名有效(即目录存在)- for ex : C:\Parent\Test
对于第一种情况,我需要将文件保存在默认位置。
第二,我需要创建目录并保存文件。
最后,我会保存在指定的路径中。
下面是我的代码片段,它将文件保存在第一个和第二个场景的默认位置。我很难区分第一和第二。 java.io.File.mkdirs 适用于第二种情况,但不适用于第一种情况。
请忽略我糟糕的代码,因为我是这种编程语言的新手。任何输入将不胜感激。
//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 很高兴地被大多数文件系统所接受。如果您不想在 path/filenames 中使用空格,您已经需要自己检查有效性,例如使用正则表达式。
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) 使用第一种方法再次检查路径是否有效。如果其有效检查文件夹是否存在。
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;
}
}
Java NIO 使这变得简单。方法Files.createDirectories无论目录已经存在还是不存在已经创建成功。
try {
Files.createDirectories(Paths.get(saveToFolder));
}
catch (IOException e) {
System.err.println("Using default folder due to the following exception: " + e);
saveToFolder = defaultFolder;
}
如果你真的想检查用户是否输入了绝对路径,只需使用Path.isAbsolute()。
我的任务是在最终用户指定的路径中保存一个文件(必须是绝对路径)。我目前面临以下三种不同的情况:
- 路径名无效(无法创建)- 例如,用户提供的路径名:sfg rgdf gfggdgfudf
- 路径名无效(但可以创建)- for ex : C:\Parent\Child\GrandChildren(此处为 C:\Parent 存在,而 Child\GrandChildren 不存在。
- 路径名有效(即目录存在)- for ex : C:\Parent\Test
对于第一种情况,我需要将文件保存在默认位置。 第二,我需要创建目录并保存文件。 最后,我会保存在指定的路径中。
下面是我的代码片段,它将文件保存在第一个和第二个场景的默认位置。我很难区分第一和第二。 java.io.File.mkdirs 适用于第二种情况,但不适用于第一种情况。 请忽略我糟糕的代码,因为我是这种编程语言的新手。任何输入将不胜感激。
//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 很高兴地被大多数文件系统所接受。如果您不想在 path/filenames 中使用空格,您已经需要自己检查有效性,例如使用正则表达式。
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) 使用第一种方法再次检查路径是否有效。如果其有效检查文件夹是否存在。
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;
}
}
Java NIO 使这变得简单。方法Files.createDirectories无论目录已经存在还是不存在已经创建成功。
try {
Files.createDirectories(Paths.get(saveToFolder));
}
catch (IOException e) {
System.err.println("Using default folder due to the following exception: " + e);
saveToFolder = defaultFolder;
}
如果你真的想检查用户是否输入了绝对路径,只需使用Path.isAbsolute()。