我从用户那里收到一个字符串,该字符串应该用作将内容保存到文件的位置。此字符串应包含足够的信息,例如目录 + 文件名。

我的问题是,如何检查提供的字符串是否是将内容保存到文件的有效路径(至少在理论上)?

无论是否创建目录,或者是否可以正确访问该位置本身都无关紧要。我只对检查提供的字符串的结构感兴趣。

我应该如何进行?我正在考虑创建一个 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
    }
  }

10-06 11:09