Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 找不到.txt文件的原因?_Java_File_Text_Filenotfoundexception - Fatal编程技术网

Java 找不到.txt文件的原因?

Java 找不到.txt文件的原因?,java,file,text,filenotfoundexception,Java,File,Text,Filenotfoundexception,当我运行这个程序时,它找不到我指向它的文件。我将这两个文本文件放在程序的src文件夹中,据我所知,调用它所需做的就是File f=new File(“filename.txt”)。但这不起作用。我还尝试使用File()中的确切目录,但也不起作用。这些文件旁边只包含一个名字和一笔钱。有什么想法吗 import java.io.*; import java.util.Scanner; class Donors { File donor2; File donor3; Scanner inD2; Sc

当我运行这个程序时,它找不到我指向它的文件。我将这两个文本文件放在程序的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);
  }
}

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

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

InputStream donor2 = getClass().getResourceAsStream("/resources/donor2.txt");
这可能是好事,也可能不是好事

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

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

构建时,文件将需要位于与从更改中执行程序相同的相对上下文中:

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


我在使用eclipse时遇到了一个与此类似的问题。您可以用以下内容检查文件路径:Path currentRelativePath=Path.get(“”);
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);