【问题标题】:Cannot access text file in java project无法访问java项目中的文本文件
【发布时间】:2016-04-06 07:16:27
【问题描述】:

我正在尝试访问项目文件夹中的文本文件output.txt。下图显示了文件夹结构。

String file=".\\testFiles\\output.txt";
BufferedReader br=new BufferedReader(new FileReader(file));

当我尝试使用上面的代码访问该文件时,出现以下异常。

 java.io.FileNotFoundException: .\testFiles\output.txt (No such file or directory)

我尝试了不同的文件路径格式,但都没有奏效。我认为问题在于文件路径格式。

提前致谢。

【问题讨论】:

  • 除了已经给出的答案之外,如果您在 Java 中对路径进行硬编码,请使用正斜杠。
  • 各位,谢谢大家的回复。最后我暂时选择了完整的绝对路径。下次我肯定会参考所有 cmets 和答案。

标签: java


【解决方案1】:

如果我没记错的话,你可以像这样在当前目录中获取一个文件夹/文件:

File folder = new File("testFiles");

然后您可以通过获取 absolutePath 并使用它创建一个新文件来打开文件,如下所示:

File file = new File(folder.getAbsoluteFile() + File.separator + "output.txt");

我不确定,但我认为你也可以这样做:

File file = new File("testFiles/output.txt");

我希望这会有所帮助:)

附:这一切都未经测试,因此可能无法正常工作。

【讨论】:

    【解决方案2】:

    从你有一个 webcontent 文件夹的事实来看,我认为这是一个 web 项目,可能打包为一个战争?在这种情况下,您要做的是将相应的文件与类一起打包,并使用以下方式访问它:

    Thread.currentThread().getContextClassLoader().getResourceAsStream("output.txt")
    

    如果您将 testFiles 文件夹添加为源文件夹,上面的代码将起作用(这意味着它将与类一起打包并在运行时可用)

    好在这样路径可以保持相对,不需要绝对

    【讨论】:

    • +1 for 如果您将 testFiles 文件夹添加为源文件夹,上面的代码将起作用(这意味着它将与类一起打包并在运行时可用)
    【解决方案3】:

    我相信您的问题是由于您依赖相对路径,因为您的路径以点开头,这意味着它将相对于用户目录(系统属性 user.dir 的值)所以我相信您的用户目录不是您所期望的。你可以做的调试就是这样:

    System.out.println(new File(file).getAbsolutePath());
    

    借助这种方法,您将能够快速知道绝对路径是否正确。

    【讨论】:

      【解决方案4】:

      您必须将您的文件声明为新文件:

      File yourFile = new File("testFiles/output.txt");
      

      【讨论】:

      • 1.不,您不必这样做。 2. 解决不了问题。
      猜你喜欢
      • 1970-01-01
      • 2012-11-08
      • 2013-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      • 2021-07-02
      相关资源
      最近更新 更多