2015-11-02 4 views
0

Имея некоторые проблемы с некоторым кодом, если я помещаю файл где-то, а затем введите полное местоположение файла, он отлично работает, но я не хочу, чтобы это было так. Я просто хочу, чтобы мой data.txt читался из текущего каталога.Сканер файлов Java, текстовый файл не найден

Ошибка: java.io.FileNotFoundException: data.txt (Система не может найти указанный файл)

Я использую Eclipse, я попытался положить data.txt в корневой папке для проекта , папка src и bin, ничего не работает. Даже попытался создать файл с нуля как часть проекта Eclipse. Все еще не будет читать как data.txt. Это должна быть какая-то глупая ошибка, которую я делаю, потому что она работает с полным файловым адресом, но это убивает любую переносимость.

Вот выдержка из кода.

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 

//... more code 

    Scanner fileScanner=null; 
    double salary; 
    double commission; 
    double sales; 
    double stock; 


    try 
    { 

     fileScanner=new Scanner(new File("data.txt")); 

     while(fileScanner.hasNextLine()) 
     { 

      int year=fileScanner.nextInt(); 
      String type=fileScanner.next(); 

Я пытаюсь избежать размещения всего кода, потому что это долго, но если это необходимо, пожалуйста, спросите, и я буду обновлять.

Спасибо!

+0

Печать 'System.getProperty (» user.dir ");' и посмотреть, является ли каталог тем, где находится файл. Если нет, используйте 'getAbsolutePath()' – sam

+0

@sam Ok, вот и все. Действительно странно, как-то мой файл driver.java работает из совершенно другого проекта. Как это происходит? Какой-то настрой? Или просто ошибка пользователя с моей стороны? – bnr32jason

+0

Проверьте [здесь] (http://stackoverflow.com/questions/1099300/whats-the-difference-between-getpath-getabsolutepath-and-getcanonicalpath). Он содержит много ответов, которые будут отвечать на ваш вопрос очень подробно, чем я могу ответить в комментариях. – sam

ответ

1

Попробуйте сделать что-то вроде этого, этот код будет добавить текущий рабочий каталог в пути,

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

public class Test { 

    public static void main(String... args) throws Exception { 
     URL location = Test.class.getProtectionDomain().getCodeSource().getLocation(); 
     System.out.println(location.getFile()); 
     Scanner fileScanner = new Scanner(new File(location.getFile() + "data.txt")); 
     while (fileScanner.hasNextLine()) { 
      System.out.println(fileScanner.nextLine()); 
     } 
    } 
} 
+0

Это был и другой пользователь, прокомментированный выше, и я проверил рабочий каталог, некоторые из того, как один из моих файлов Java должен быть открыт из совершенно другого проекта. Благодаря! – bnr32jason

0

Структура проекта должна выглядеть следующим образом:

ProjectRoot 
|-> src/ 
|-> bin/ 
|-> data.txt 
+0

Это выглядит так. Вот почему я так смущен. Я использовал сканер файлов без проблем. – bnr32jason

Смежные вопросы