【问题标题】:Reasons why .txt file could not be found?找不到 .txt 文件的原因?
【发布时间】:2014-04-30 00:27:40
【问题描述】:

当我运行这个程序时,它找不到我指向的文件。我将这两个文本文件放入程序的 src 文件夹中,据我了解,我只需要将其命名为 File f = new File("filename.txt")。但这不起作用。我也尝试使用File() 中的确切目录,但它也不起作用。这些文件仅包含名称和旁边的金额。有什么想法吗?

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

class Donors {
File donor2;
File donor3;
Scanner inD2;
Scanner inD3;

Donors(File d2, File d3){
    donor2 = d2;
    donor3 = d3;
}

double totalDonations(){
    double total = 0;
    try{
    inD2 = new Scanner(donor2);
    while(inD2.hasNext()){
        total += inD2.nextDouble();
    }
    }catch(java.io.FileNotFoundException e){
        System.out.println("File can't be found");
    }

    try{
    inD3 = new Scanner(donor3);
    while(inD3.hasNext()){
        total += inD3.nextDouble();
    }
    }catch(java.io.FileNotFoundException e){
        System.out.println("File can't be found");
    }

    return total;
}

public void closeFile(){
    inD2.close();
    inD3.close();
  }
}

public class DonorCalculations {
 public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int userInput;
    File donor2 = new File("H:\\CSC 191\\Assignment9\\src\\resources\\donor2.txt");
    File donor3 = new File("donor3.txt");
    Donors dObj = new Donors(donor2, donor3);

    do{
        System.out.println("SELECT");
        System.out.println("1. Total money from donations");
        System.out.println("2. Total donation from a individual");
        System.out.println("0. Quit");

        userInput = input.nextInt();
        System.out.println();

        switch(userInput){
            case 1:
                System.out.println(dObj.totalDonations());
                break;
            case 2:
                System.out.println("Enter donor's name: ");
                String name = input.next();
                //dObj.donorTotal(name);
                break;
            case 0:
                System.out.println("Goodbye!");
                break;
        }
        System.out.println();
    }while(userInput != 0);
  }
}

【问题讨论】:

  • 我在使用 eclipse 时遇到了一个与此非常相似的问题。您可以使用以下内容检查文件路径: Path currentRelativePath = Paths.get("");

标签: java file text filenotfoundexception


【解决方案1】:

您现在已将文件嵌入到您的应用程序中,使其成为嵌入式资源。您不能再像文件一样访问它们。

您需要使用 Java 提供的资源查找功能,例如...

InputStream donor2 = getClass().getResourceAsStream("/resources/donor2.txt");

这可能不是一件好事。

如果您必须从平面文件中读取内容,那么这些文件需要位于程序执行上下文的相对位置内。

您可以使用System.out.println(System.getProperty("user.dir")); 确定当前程序的执行上下文,它将打印程序正在其中执行的当前目录。在开发过程中,您的文本文件应位于该目录的相对上下文中。

当它被构建时,文件需要与程序执行时处于相同的相对上下文中

【讨论】:

    【解决方案2】:

    变化:

    File donor2 = new File("H:\\CSC 191\\Assignment9\\src\\resources\\donor2.txt");
    File donor3 = new File("donor3.txt");
    Donors dObj = new Donors(donor2, donor3);
    

    收件人:

    File donor2 = new File("H:\\CSC 191\\Assignment9\\src\\resources\\donor2.txt");
    File donor3 = new File(getClass().getClassLoader().getResource("donor3.txt"));
    Donors dObj = new Donors(donor2, donor3);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-29
      • 1970-01-01
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多