FileNotFoundException,但文件存在于正确的路径。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FileNotFoundException,但文件存在于正确的路径。相关的知识,希望对你有一定的参考价值。

我是编程新手,每次我尝试读取一个文件。我得到FileNOtFoundException。

我可能哪里出了问题?

import java.io.*;
import java.util.Scanner;

public class ReadFile 

    public ReadFile()
    
        readFile();
    
    public void readFile()
    
        String filename = "trees.txt";
        System.out.println(new File(".").getAbsolutePath()); //file is at this path.
        String name = "";
        try
        
            FileReader inputFile = new FileReader(filename);
            Scanner parser = new Scanner(inputFile);
            while (parser.hasNextLine())
            
                name = parser.nextLine();
                System.out.println(name);
            
            inputFile.close();
        
        catch (FileNotFoundException exception)
        
            System.out.println(filename + " not found");
        
    

有其他方法可以读取文件吗?

答案

这段代码

FileReader inputFile = new FileReader(filename);

你必须定义文件的完整路径,名称为 filename 如果不是,它将打开不在当前工作目录下的文件你应该试试

FileReader inputFile = new FileReader(new File(new File("."), filename));
// defind new File(".") it mean you will you open file in current working directory  

你可以在这里阅读更多。Java,从当前目录读取文件?

另一答案

试着打印你实际要打开的文件的路径,这样你就可以确定文件存在于正确的位置了

String filename = "trees.txt";
File file = new File(filename);
System.out.println(file.getAbsolutePath());

而且,你正在关闭 FileReader 里面 try,而不是关闭 Scanner如果发生了错误,这些资源将永远不会被关闭,你需要把这些关闭语句放在一个 finally 挡,或者用资源试试

以上是关于FileNotFoundException,但文件存在于正确的路径。的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio“FileNotFoundException:无法加载程序集”问题,但没有文件名?

当 UDF 使用一些外部资源文件但在本机运行时,为啥 Hive 错误 FileNotFoundException?

Android (Studio) FileNotFoundException 但文件在 SD 卡上

asp net core - 文件下载结果为 FileNotFoundException

在我的Spring Boot项目中,当我将文件目录更改为src / main / resources时发生了FileNotFoundException

在 spark 中跳过 hive 表中丢失的文件以避免 FileNotFoundException