提问人:Kralkaz -.- 提问时间:6/13/2023 最后编辑:Kralkaz -.- 更新时间:6/14/2023 访问量:38
扫描程序构造失败,因为 FileNotFoundException
Scanner construction fails because FileNotFoundException
问:
下面的代码 gts 一个目录,如果其中有一个文件,称为“Tabelle.csv”,则应创建扫描程序并显示其内容。
if (folder.isDirectory()){
File[] files = folder.listFiles();
String ta = "Tabelle.csv";
for (File file: files){
if (file.exists()){
if (file.getName().equals(ta)){
System.out.println("PATH: " + file);
//*
Scanner sc = new Scanner (file);
sc.useDelimiter(";");
while(sc.hasNext()){
System.out.println(sc.next());
}
sc.close();//*/
}
}
}
}
然而,这抛出了一个 FileNotFoundExcepion,这让我感到困惑,因为我用两个 if 加倍检查它的存在。
请帮助我提供尽可能易于理解的解决方案,因为我仍在学习。 提前致谢:D
ChatGPT 告诉 be 这样做:
FileInputStream fis = new FileInputStream(file);
Scanner sc = new Scanner(fis);
这也导致了同样的错误,但在 FIS 结构中。
我也不想要一个trycatch,因为这需要工作,我不在乎控制台告诉我:“文件不存在”或其他东西
编辑:
我从“Scanner sc = new Scanner(THEACTUALPATH)”开始,但这给了我错误,所以我从那里开始向后工程。这也是外如果的原因。我知道这毫无意义,但它是一种健全性检查,文件在那里......我不知道为什么会出现错误,以及如何避免它
答:
检查您在此处指定的文件夹路径...
如果 (folder.isDirectory()){ }
您是否使用转义序列正确地将路径放入 File 构造函数中? 喜欢这个。。。
文件夹=new File(“C:\\父文件夹\\子文件夹”);
如果您使用的是 Windows,请使用双斜杠 \\ 分隔文件夹或文件。
看看就知道了。
将扫描程序创建放入 try catch 块以处理错误。
并清除 if (file.exists()){ 块,因为 listfiles 已经为您提供了存在的文件和目录列表,如果您正在寻找一种仅过滤掉文件的简单方法,只需使用 if(!file.isDirectory()) 尽管有 file.exists(),这将为您提供一个条件,仅使用您也可以使用的文件运行代码 if(!file.isDirectory() && file.getName().equals(ta)) 一石二鸟......首先,代码将检查您的文件是否为文件,然后检查名称是否匹配的事实......
希望它对朋友有所帮助。
您的新代码应如下所示。
if (folder.isDirectory()){
File[] files = folder.listFiles();
String ta = "Tabelle.csv";
for (File file: files){
if (file.isDirectory() && file.getName().equals(ta)){
System.out.println("PATH: " + file);
//*
try{
Scanner sc = new Scanner (file);
sc.useDelimiter(";");
while(sc.hasNext()){
System.out.println(sc.next());
}
sc.close();//*/
}catch(Exception error){
System.out.println("Error occurred! Reason>>>"+error);
}
}
}
}
评论
/
评论
if
Files.find
new File(folder, "Tabelle.csv").isFile()