Читать из файла в затмении - PullRequest
17 голосов
/ 25 марта 2009

Я пытаюсь читать из текстового файла для ввода данных в мою Java-программу. Однако затмение непрерывно выдает мне ошибку «Источник не найден», где бы я ни находился.

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

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

Что бы я ни делал, он не может найти файл.

вот мой код на случай, если он уместен:

System.out.println(System.getProperty("user.dir"));
    File file = new File("file.txt");


    Scanner scanner = new Scanner(file);

кроме того, он говорит, что каталог пользователя является каталогом проекта, и там тоже есть копия.

Понятия не имею, что делать.

Спасибо, Alex

после попытки сделать предложение, приведенное ниже, и повторного обновления я был встречен множеством ошибок.

FileNotFoundException(Throwable).<init>(String) line: 195   
FileNotFoundException(Exception).<init>(String) line: not available 
FileNotFoundException(IOException).<init>(String) line: not available   
FileNotFoundException.<init>(String) line: not available    
URLClassPath$JarLoader.getJarFile(URL) line: not available  
URLClassPath$JarLoader.access$600(URLClassPath$JarLoader, URL) line: not available  
URLClassPath$JarLoader$1.run() line: not available  
AccessController.doPrivileged(PrivilegedExceptionAction<T>) line: not available [native method] 
URLClassPath$JarLoader.ensureOpen() line: not available 
URLClassPath$JarLoader.<init>(URL, URLStreamHandler, HashMap) line: not available   
URLClassPath$3.run() line: not available    
AccessController.doPrivileged(PrivilegedExceptionAction<T>) line: not available [native method] 
URLClassPath.getLoader(URL) line: not available 
URLClassPath.getLoader(int) line: not available 
URLClassPath.access$000(URLClassPath, int) line: not available  
URLClassPath$2.next() line: not available   
URLClassPath$2.hasMoreElements() line: not available    
ClassLoader$2.hasMoreElements() line: not available 
CompoundEnumeration<E>.next() line: not available   
CompoundEnumeration<E>.hasMoreElements() line: not available    
ServiceLoader$LazyIterator.hasNext() line: not available    
ServiceLoader$1.hasNext() line: not available   
LocaleServiceProviderPool$1.run() line: not available   
AccessController.doPrivileged(PrivilegedExceptionAction<T>) line: not available [native method] 
LocaleServiceProviderPool.<init>(Class<LocaleServiceProvider>) line: not available  
LocaleServiceProviderPool.getPool(Class<LocaleServiceProvider>) line: not available 
NumberFormat.getInstance(Locale, int) line: not available   
NumberFormat.getNumberInstance(Locale) line: not available  
Scanner.useLocale(Locale) line: not available   
Scanner.<init>(Readable, Pattern) line: not available   
Scanner.<init>(ReadableByteChannel) line: not available 
Scanner.<init>(File) line: not available    

используемый код:

System.out.println(System.getProperty("user.dir"));
    File file = new File(System.getProperty("user.dir") + "/file.txt");


    Scanner scanner = new Scanner(file);

Ответы [ 7 ]

19 голосов
/ 25 марта 2009

Вы пытались обновить (щелкнуть правой кнопкой мыши -> обновить) папку проекта после копирования файла туда? Это синхронизирует вашу файловую систему с внутренней файловой системой Eclipse.

Когда вы запускаете проекты Eclipse, CWD (текущий рабочий каталог) является корневым каталогом проекта. Не каталог бин. Не каталог src, а корневой каталог.

Также, если вы работаете в Linux, помните, что его файловые системы обычно чувствительны к регистру.

7 голосов
/ 25 марта 2009

Вы пытались использовать абсолютный путь:

File file = new File(System.getProperty("user.dir") + "/file.txt");
4 голосов
/ 25 марта 2009

Вы ищете / читаете файл "fiel.txt" в каталоге выполнения (где, я думаю, хранится класс).

Если вы хотите прочитать файл в данном каталоге, вы должны сказать так:

File file = new File(System.getProperty("user.dir")+"/"+"file.txt");

Вы также можете указать каталог с относительным путем, например, "./images/photo.gif) для подкаталога.

Обратите внимание, что есть также свойство для разделителя (жестко закодировано в "/" в моем примере)

С уважением Гийом

3 голосов
/ 09 июля 2012

Я использую Eclipse, и я застрял на невозможности чтения файлов из-за «исключение файла не найдено». Чтобы решить эту проблему, я переместил файл в корень моего проекта. Надеюсь, это поможет.

1 голос
/ 25 марта 2009

В вашем коде нет ничего плохого, следующее прекрасно работает, когда у меня есть файл file.txt в каталоге user.dir.

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

public class testme {
    public static void main(String[] args) {
        System.out.println(System.getProperty("user.dir"));
        File file = new File("file.txt");
        try {
            Scanner scanner = new Scanner(file);
        } catch (Exception e) {
        System.out.println(e);
        }
    }
}

Не доверяйте Eclipse тому, где находится файл. Выйдите на настоящую файловую систему с Windows Explorer или аналогичной и проверьте.

Основываясь на ваших изменениях, я думаю, что нам также нужно просмотреть ваши операторы импорта.

0 голосов
/ 15 мая 2014

Иногда, даже если файл находится в правильном каталоге, все еще существует исключение «файл не найден». Одна вещь, которую вы можете сделать, это поместить текстовый файл в затмение, где находятся ваши классы, с левой стороны. Он спросит вас, хотите ли вы скопировать, нажмите «Да». Иногда это помогает.

0 голосов
/ 18 января 2012

вам просто нужно получить абсолютный путь к файлу, поскольку искомый файл не существует в рабочей среде eclipse во время выполнения Вы можете использовать методы - getProperty () или getLocationURI (), чтобы получить абсолютный путь к файлу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...