gpt4 book ai didi

java - 如何知道java中保存文件的无效路径

转载 作者:行者123 更新时间:2023-12-02 00:39:24 28 4
gpt4 key购买 nike

在Java中,我想创建一个文件并在其中保存数据。带路径的文件名称取自用户。现在,如果用户给出像 C:\temp\./user\fir/st.csv 这样的无效路径,这是一个无效路径,因为 "."/ 位于路径中,在 Windows 操作系统上 "\" 用作路径分隔符。

在执行程序(一个命令行工具)之前,C:\目录中没有temp文件夹,但是当我运行时程序创建 temp 文件夹,然后在 temp 中创建 user,然后在 user 中创建 fir 文件夹,最后是其中的 st.csv 。虽然我希望如果用户给出了此类无效路径或文件名,则用户应该通过消息“无效路径或文件名”来注意到。

我该怎么办?程序代码如下:

public class FileTest {
public static void main(String args[]) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please enter path:");
String path = br.readLine();
File file = new File(path);
String path1 = file.getParent();
File file2 = new File(path1);
if (!file2.exists()) {
System.out.println("Directory does not exist , So creating directory");
file2.mkdirs();
}
if (!file2.exists()) {
System.out.println("Directory can not be created");
} else {
FileWriter writer = new FileWriter(file);
PrintWriter out = new PrintWriter(writer);
System.out.println("Please enter text to write on the file, print exit at new line to if finished");
String line = "";
while ((line = br.readLine()) != null) {
if (line.equalsIgnoreCase("exit")) {
System.out.println("Thanks for using our system");
System.exit(0);
} else {
out.println(line);
out.flush();
}
}
}
}
catch (IOException e) {
e.printStackTrace();
}
}
}

现在,如果我将路径指定为 C:\tump\./user\fir/st.csv 那么它会在 C 中创建 tump 文件夹code> 驱动器,然后是 tump 中的 user,然后是 user 文件夹中的 fir,然后是其中的 st.csv 文件。

最佳答案

boolean exists = (new File("filename")).exists();
if (exists) {
// File or directory exists
} else {
// File or directory does not exist
}

PLUS:您绝不能使用硬编码的路径分隔符。您遇到了问题,请使用静态属性

File.separator - string with file separator
File.separatorChar - char with file separator
File.pathSeparator - string with path separator
File.pathSeparatorChar - char with path separator

关于java - 如何知道java中保存文件的无效路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6798356/

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