【问题标题】:Java program file not found未找到 Java 程序文件
【发布时间】:2016-02-28 10:08:49
【问题描述】:

我查看了此处发布的有关此问题的问题,但没有一个解决方案有帮助。我找到了这个页面的链接http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#Scanner%28java.io.File%29
也,没有帮助。我浏览了我的教科书,甚至直接从书中复制了一个类似的代码,并再次获得了 File Not Found 异常。 input.txt 文件与程序文件在同一个文件夹中,我尝试使用特定路径,也在代码 System.out.println(new File("C:/input.txt") 中添加了这一行。获取绝对路径()); 它也没有帮助。我觉得我现在的问题多于答案。文件名正确,大小写正确。我确实发现 .txt 文件正在保存在 Word 中,所以我去那里并将格式更改为纯 txt 文件。将其保存为 Word 文档是否与此问题有关,还是我在那里浪费时间?

这是我的代码:

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

public class FileRead
{
    public static void main(String[] args) throws IOException
    {
        double count = 0;
        double sum = count++;
        double average = sum/count;

        File fileObject = new File("C:/input.txt");
        System.out.println(new File("C:/input.txt").getAbsolutePath());
        Scanner fileIn = new Scanner (fileObject);

        while (fileIn.hasNext())
        {
            count = fileIn.nextDouble();
            sum = count++;
        }
        average = sum/count;
        DecimalFormat df = new DecimalFormat("#0.00");
        System.out.println("The total of the: " + count + "numbers entered are: "
            + sum + " and the average is: " + df.format(average));
    }
}

【问题讨论】:

  • 您确定您的文档具有扩展名 .txt 吗?请注意,它可以是input.txt.docx,正如您所说您在 Word 中创建的文件。为了安全起见,请配置您的文件夹以查看所有文件的扩展名。
  • 实际上,我在texpad中创建了文件,但由于某种原因它保存在Word中?但它确实有扩展名 .txt。

标签: java filepath filenotfoundexception eof


【解决方案1】:

C:/input.txt 告诉文件系统在硬盘驱动器的根目录中查找名为 input.txt 的文件,假设 C:/ 等效于 C:\
这是您在根目录中运行程序的位置。如果没有,并且根目录中没有名为 input.txt 的文件,程序将无法按预期运行。

尝试按照 BlackCode 的说明更改代码,和/或删除 C:/

在命令窗口中输入pwd 会告诉你你所在的位置,如果它不是你的硬盘驱动器的根目录,程序将无法找到你告诉它要查找的文件。

【讨论】:

    【解决方案2】:

    您需要转义斜杠:“C://input.txt”。

    【讨论】:

    • 否 - 只有反斜杠需要转义 - 即正斜杠
    【解决方案3】:

    在文件路径中将“/”更改为 File.separator
    示例:

        File fileObject = new File("C:" + File.separator + "input.txt");
    

    【讨论】:

      【解决方案4】:

      “input.txt 文件和程序文件在同一个文件夹”:也就是说你只需要“input.txt”

      要查看保存名称的确切文件,您可以转到命令窗口并在您要查找的位置键入 dir。

      您也可以在程序中执行此操作:

      File f=new File(".");
      String[] fs=f.list();
      for(String s:fs) System.out.println(s);
      

      如果您的文件没有打印,那么它在其他地方。

      【讨论】:

      • 我也是这么想的。我现在正在尝试添加一个 try and catch 语句,但它也不喜欢那样。
      • 那么只有一种方法:进入命令窗口,在程序位置输入dir;您将看到所有文件与保存时完全相同
      • 我这样做了,文件出现在列表中,我将代码添加到程序中,它就在那里......我只是不明白为什么它找不到它.
      【解决方案5】:

      您的代码看起来不错,并且在我的 Window 7 上运行良好(尽管我必须更改为管理员才能创建 c:\input.txt) 即使文件不存在, .getAbsolutePath() 也会给出一个值,这令人困惑。 更好的测试如下 - 如果您的文件不存在,它将打印 false。

      File fileObject = new File("c:/input.txt");
      System.out.println(fileObject.exists());
      Scanner fileIn = new Scanner (fileObject);
      

      要确定文件是否存在,请在命令行尝试此操作

      echo 1 2 3 4 > input.txt
      

      然后去掉完整路径,只使用“input.txt”作为文件名。

      【讨论】:

      • 我试过了,它仍然说找不到它...我知道它就在那里,因为我一直在努力确保我没有产生幻觉,因为我创建了它。
      • 如果你确定你的输入文件和你的可执行文件在同一个文件夹中,那么一开始就不需要 c:/。您是使用 Eclipse 还是从命令行编译?
      • 使用 JDK 我从这里得到它 oracle.com/technetwork/java/javase/downloads 这是教练发给我们的,现在我意识到那里确实有大量的编译器,但这是我想我们应该使用的编译器.
      • 嗯,你的代码运行良好,我试过了。唯一的解释是该文件不在您认为的位置。尝试将输入文件名更改为您知道必须存在的名称 - “FileRead.java”没有斜杠没有 c:您至少会在不同的地方收到一条错误消息。如果有什么安慰的话——我去过你的地方很多次了。
      【解决方案6】:

      使用这个:

      Scanner fileIn = new Scanner ("C:/input.txt");

      【讨论】:

      • 这给出了一个新错误,我第一次看错了,所以当我尝试时它说 inputMismatchException。
      猜你喜欢
      • 1970-01-01
      • 2017-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      • 1970-01-01
      相关资源
      最近更新 更多