如何检查文件路径是否无效/Java中不存在



我的任务是将文件保存在最终用户指定的路径中(必须是绝对路径)。目前面临三种不同的方案,如下所示:

  1. 路径名是无效的(无法创建) - for ex,用户提供的路径名: sfg rgdf gfggdgfudf
  2. 路径名是无效的(但是,可以创建) - for ex:c:c: parent child child Grandchildren(shere c: parent parent 存在儿童孙子不。
  3. 路径名是有效的(即存在目录) - 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**

1)对于第一个案例,请使用Regex确定路径是否有效

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)如果路径通过第一个方法有效,并且如果存在第二种方法。

kut igeiguye jh愉快地接受了大多数文件系统。如果您不想在路径/文件名中的空间,则已经需要自己检查有效性,例如使用正则表达式。

感谢所有添加其输入的人。我对有效的代码进行了几乎没有更改。我的作业要求之一是我的程序必须将绝对路径作为输入。有了我以下代码,可以将数据保存在情况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()在contists()上有效。我尚未检查所有情况,但这应该对您有所帮助。

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()。

最新更新