【问题标题】:FileNotFoundException when creating a Scanner in Eclipse with Java使用 Java 在 Eclipse 中创建扫描程序时出现 FileNotFoundException
【发布时间】:2012-05-04 16:48:52
【问题描述】:

在 Snow Leopard 上的 Eclipse (Indigo) 上运行以下 Java 6 代码时出现 FileNotFoundException:

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

public class readFile {

    public static void main(String[] args) {

        Scanner s = new Scanner(new FileReader("/Users/daniel/pr/java/readFile/myfile.txt"));  // Line 9

    }
}

例外是

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Unhandled exception type FileNotFoundException

    at readFile.main(readFile.java:9)

我当前的工作空间是 /Users/daniel/pr/java。它只包含一个项目(readFile),文件层次结构如下:

- readFile
    - src
        - (default package)
            - readFile.java
    - JRE System Library [JavaSE-1.6]
    - myfile.txt

在阅读了几个非常相似的问题后,我已经尝试过

  • 将 myfile.txt 的副本放在项目、bin、src 和工作区目录以及我的主文件夹和根文件夹中
  • 识别工作目录并使用相对路径
  • 在 Eclipse 中通过“运行配置 > 参数 > 工作目录”手动设置工作区
  • 在 bin、readFile、src 和 java 目录中使用命令行 Java 启动器运行程序(在所有这些地方都有 myfile.txt 的副本)
  • 删除文件扩展名和/或延长文件名(超过一些假定的最小字符限制),以及
  • 验证 myfile.txt 的权限(它们现在是 rw-r--r--)。

我很茫然。可能是什么问题呢? (感谢阅读!)

【问题讨论】:

    标签: java eclipse java.util.scanner filenotfoundexception filereader


    【解决方案1】:

    异常告诉你问题。

    您的主代码可能会抛出 FileNotFoundException,因此您需要在代码中考虑这一点,方法是在方法签名中声明可以抛出该异常,或者将带有 try catch 的代码:

    声明:

    public static void main(String[] args) throws FileNotFoundException{
    
        Scanner s = new Scanner(new FileReader("/Users/daniel/pr/java/readFile/myfile.txt"));  // Line 9
    
    }
    

    或者使用 try/catch

    public static void main(String[] args) {
        try { 
            Scanner s = new Scanner(new FileReader("/Users/daniel/pr/java/readFile/myfile.txt"));  // Line 9
        } catch (FileNotFoundException e) {
            //do something with e, or handle this case
        }
    }
    

    这两种方法的区别在于,由于这是你的主要方法,如果你在方法签名中声明它,你的程序将抛出异​​常并停止,给你堆栈跟踪。

    如果您使用 try/catch,您可以通过记录错误、重试等方式来处理这种情况。

    您可能想看看: http://docs.oracle.com/javase/tutorial/essential/exceptions/学习Java中的异常处理,很有用。

    【讨论】:

    • 第二种方法中是否需要'throws'?
    • 起来!从第一个复制/粘贴...现在修复!谢谢。
    【解决方案2】:

    FileNotFoundException 是一个检查异常!您必须捕获异常...

     public static void main(String[] args) {
         try {
            Scanner s = new Scanner(new FileReader("/Users/daniel/pr/java/readFile/myfile.txt"));  // Line 9
         } catch(FileNotFoundException ex) {
             //Handle exception code ...
         }
     }
    

    【讨论】:

      【解决方案3】:
      "/Users/daniel/pr/java/readFile/myfile.txt"
      

      不应该是这样的:

      "/users/daniel/pr/java/readFile/myfile.txt"
      

      【讨论】:

      • 用户目录在我的 mac 上大写。不过,也许不在其他人身上。
      猜你喜欢
      • 2013-05-17
      • 1970-01-01
      • 2018-10-08
      • 2021-02-10
      • 2023-04-03
      • 2021-10-30
      • 1970-01-01
      • 1970-01-01
      • 2018-05-18
      相关资源
      最近更新 更多