我是java的新手,我遗漏了一些非常基本的东西。当我运行我的代码时,我试图为代码中创建的帐户增加价值。当我尝试运行代码时,我收到一个无法找到文件的错误,但我认为该文件是在代码中创建的。
import java.util.Scanner;
import java.io.File;
import java.io.IOException;
class DoPayroll
{
public static void main(String args[])
throws
IOException
{
Scanner diskScanner =
new Scanner(new File("EmployeeInfo.txt"));
for (int empNum = 1; empNum <= 3; empNum++)
{
payOneEmployee(diskScanner);
}
}
static void payOneEmployee(Scanner aScanner)
{
Employee anEmployee = new Employee();
anEmployee.setName(aScanner.nextLine());
anEmployee.setJobTitle(aScanner.nextLine());
anEmployee.cutCheck(aScanner.nextDouble());
aScanner.nextLine();
}
}
一旦运行我收到以下错误
Exception in thread "main" java.io.FileNotFoundException: EmployeeInfo.txt (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.util.Scanner.<init>(Scanner.java:636)
at DoPayroll.main(jobexe.java:11)
我认为在上面的代码中使用new Scanner(new File("EmployeeInfo.txt")
会在输入值后创建新文件。请给我一个简单的解决方案和解释。
答案 0 :(得分:2)
写入时会创建一个新文件。但要从中读取,它必须已经存在。您可能希望通过
检查它是否存在File file = new File("EmployeeInfo.txt");
if (file.exists()) {
Scanner diskScanner = new Scanner(file);
for (int empNum = 1; empNum <= 3; empNum++)
payOneEmployee(diskScanner);
}
答案 1 :(得分:1)
File
对象找不到您传递的文件名。您需要将EmployeeInfo.txt
的完整路径传递给new File(...)
,或者确保当前工作目录是包含此文件的目录。
答案 2 :(得分:1)
File
构造函数不会创建文件。相反,它创建了访问磁盘上文件所需的Java信息。您必须使用创建的File
在Java中实际执行文件IO,才能创建新文件。
Scanner constructor需要现有的File
。因此,您需要一个到EmployeeInfo.txt
的真实有效位置的完整路径,或者首先使用文件I / O创建该文件。关于Java中I / O的This tutorial将有所帮助。
答案 3 :(得分:0)
您认为错误:D Scanner
需要一个现有文件,这似乎非常合乎逻辑,因为它读取值并且没有现有文件难以阅读。 documentation还声明:
抛出: FileNotFoundException - 如果找不到源
因此,简而言之:您必须向扫描仪提供可读的现有文件。
答案 4 :(得分:0)
您错误地实例化了一个类File实例,并实际将临时文件写入磁盘。走这条线
Scanner diskScanner =
new Scanner(new File("EmployeeInfo.txt"));
并将其替换为
File newFile = File.createTempFile("EmployeeInfo", ".txt");
Scanner diskScanner = new Scanner(newFile);
编辑:彼得提出了一个很好的观点。我现在正面对着。
答案 5 :(得分:0)
正如另一个答案所解释的那样,该文件不是仅使用new File("EmployeeInfo.txt")
创建的。
您可以使用
File file = new File("EmployeeInfo.txt");
if(file.exists()) {
//it exists
}
或者您可以使用
创建文件(如果它尚不存在)file.createNewFile();
如果文件已创建,则该方法会返回true
,如果已存在,则返回false
。