gpt4 book ai didi

Java 正则表达式不适用于文件验证

转载 作者:行者123 更新时间:2023-11-30 10:50:21 25 4
gpt4 key购买 nike

我正在尝试验证用户通过旋转框输入的文件路径。他们单击他们想要文件的位置,然后他们自己添加文件的名称。所以他们需要确保它的格式如“C:/files/documents/hello.txt,他们需要在最后指定文件类型,这样我就可以创建一个新文件来写入。isFile 方法不由于文件必须存在,因此似乎无法满足这一点,因此我现在尝试使用带有 if 语句的正则表达式来验证文件路径。

public class Main {
public static void main (String [] args) throws FileNotFoundException {
String fileName = "C:/users/furquan/hello.txt";
File zerina = new File (fileName);
//FileInputStream fis = new FileInputStream (zerina);
String regex = "\\^(?:[\w]\:|\\\)(\\\[a-z_\-\s0-9\.]+)+\\\.(txt|gif|pdf|doc|docx|xls|xlsx)$";
System.out.println (fileName.matches(regex));
}
}

我知道由于转义序列,您需要在 Java 正则表达式中添加更多斜杠,但我无法让它工作

最佳答案

使用java.nio.file.Path . (您不需要 Regex)

例如:

// imports
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;


Path path = Paths.get("C:/users/furquan/hello.txt");
Path parent = path.getParent();
if (Files.exists(parent) && path.getFileName().endsWith(".txt")) {
// your code goes here
}

编辑:

另外,如果你想验证文件名:

static final Pattern FILE_NAME_PATTERN = Pattern.compile("([\\w\\d\\s\\-\\.])+\\.(txt|gif|pdf|doc|docx|xls|xlsx)");

public static void main(String[] args) throws Exception {
String s = "C:/users/furquan/hello.txt";
System.out.println(createFile(s));
}

static boolean createFile(String fileName) throws IOException {
Path path = Paths.get(fileName);
if (Files.exists(path)) {
return true;
}
if (FILE_NAME_PATTERN.matcher(path.getFileName().toString()).matches()) {
Path parent = path.getParent();
if (!Files.exists(parent)) {
Files.createDirectories(parent);
}
Files.createFile(path);
return true;
}
return false;
}

关于Java 正则表达式不适用于文件验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35103709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com