Как исправить исключение FileNotFoundException, когда программа создает исключение IOException? - PullRequest
0 голосов
/ 11 апреля 2019

Я выполнял задание по программированию, которое включает чтение из файла, который содержит данные о сотрудниках, и мне необходимо написать программу, которая выдает IOException. Когда я попытался прочитать из файла, который находится в той же папке, что и файл Java, который я пишу, это дало мне исключение FileNotFoundException. Вот мой код:

import java.util.*;
import java.io.*;
public class main {
    public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub
    Employee[] employees = new Employee[19];
    File infile = new File("employeeData.txt");
    Scanner inputFile = new Scanner (infile); // FileNotFoundException 
    //  thrown here
}

Первые несколько строк текстового файла employeeData.txt, который находится в той же папке, что и мой файл main.java:

// Type of employee; name; ID
Hourly;Adam White;200156;12.75;40 // then pay rate; hours
Salaried;Allan Westley;435128;38500.00 // then annual salary
Supervisor;Annette Turner;149200;75000.00;5000;435128 614438 435116 548394 // then salary; bonus; ID's of employees who report to her

Я ожидал, что он прочитает текстовый файл, который я предварительно просмотрел выше, поскольку он находится в той же папке, но он просто дал мне исключение FileNotFoundException.

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

вам нужно указать путь к файлу из папки Project root, поэтому, если ваш файл находится под src, путь будет: src/employeeData.txt

0 голосов
/ 11 апреля 2019

Это происходит потому, что JVM пытается найти ваш файл в текущем рабочем каталоге, который обычно является корневой папкой проекта, а не папкой src.

Вы можете настроить относительный путь к файлу, чтобы отразить это, или вы можете указать абсолютный путь.

Если вы хотите узнать, где он ищет файл, вы можете указать System.out.print(infile.getAbsolutePath()); сразу после создания объекта File.

Решение с относительным путем:

 public static void main(String[] args) throws IOException 
 {
    Employee[] employees = new Employee[19];
    File infile = new File("src/employeeData.txt");
    Scanner inputFile = new Scanner(infile);
 }

Решение с абсолютным путем:

public static void main(String[] args) throws IOException 
{
    Employee[] employees = new Employee[19];
    File infile = new File("C:/PATH_TO_FILE/employeeData.txt");
    Scanner inputFile = new Scanner(infile);
}
...