【问题标题】:Filenotfoundexception JAVA, need full path [duplicate]Filenotfoundexception JAVA,需要完整路径[重复]
【发布时间】:2016-04-15 16:25:10
【问题描述】:

我的程序在参数中获取了一个文件名,但如果我想使用它,我需要完整的目录路径,否则我会得到 filenotfoundexception。 例如: 我的程序从 C:\Users\me\documents 获取了 sample.txt 参数。

File file = new File(args[0]);
FileReader fr = new FileReader(file);

即抛出 filenotfoundexception。 那么我应该用什么来定位文件呢? 我看到了很多类似的问题,但我没有找到解决方案:( 我尝试使用 getResources 和 getPath 但没有。

【问题讨论】:

  • 可以获取当前目录,必要时添加到路径中。但是,在盲目添加当前目录之前,还必须处理指定的args[0]是相对路径还是绝对路径。如果您使用的是 Java 8,请查看 Path 对象以提供潜在帮助。
  • 试着打印出args[0] 看看它是什么。如果该路径正确,您的文件应该存在..
  • 当我打印出 args[0].getAbsolutePath 时,它会给出一个完全不同的路径,其中不存在 sample.txt 简单的 getPath 会返回 sample.txt

标签: java file path filenotfoundexception


【解决方案1】:

如果该文件与源代码位于同一目录中,则可以仅使用文件名打开该文件。如果文件位于任意随机位置,则需要提供文件的完整路径及其名称。

例如:c:\documents\sample.txt

或者您可以尝试的另一件事是递归地遍历文件系统中存在的所有文件夹并找到文件。但是,这将是一个非常糟糕的解决方案。

【讨论】:

  • 这个答案不正确,所以我投了反对票。当前工作目录通常与包含源代码的目录不同。
  • 我有没有说过当前工作目录总是包含源代码的目录?加尔
  • 你只讲了包含源代码的目录。但是当前的工作目录才是最重要的。它们可能相同,也可能不同。
【解决方案2】:
 File fileName = new File("myfile.txt");
       if(!fileName.exists()) {
       fileName.createNewFile();
} 
FileOutputStream oFile = new FileOutputStream(fileName, false); 

如果您的文件不在该位置,请添加此代码,这将为您创建一个,那么您将不会在后半部分收到 filenotfound 异常

【讨论】:

  • 但我想使用文件中的数据。
  • src/file.txt - 这是文件路径的一种格式,使用我提供的代码将此文件添加到您的代码中,也许您没有权限读取您尝试读取的文件
  • 还是一样,好像只在项目文件夹中搜索而不在其他文件夹中搜索。可能我必须添加完整路径才能找到文件。
猜你喜欢
  • 1970-01-01
  • 2011-05-07
  • 1970-01-01
  • 1970-01-01
  • 2018-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多