Чтение из файла в eclipse

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

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

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

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

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

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


    Scanner scanner = new Scanner(file);

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

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

Спасибо, Алекс

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

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);

person Buzkie    schedule 25.03.2009    source источник


Ответы (7)


Вы пытались обновить (щелкните правой кнопкой мыши -> обновить) папку проекта после копирования туда файла? Это СИНХРОНИЗИРУЕТ вашу файловую систему с внутренней файловой системой Eclipse.

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

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

person Pablo Santa Cruz    schedule 25.03.2009
comment
Я думаю, проблема была в том, что я обновил файл src и files, но не файл проекта, поэтому он так и не нашел его. Спасибо за помощь - person Buzkie; 25.03.2009

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

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

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

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

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

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

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

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

person PATRY Guillaume    schedule 25.03.2009

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

person Electron    schedule 08.07.2012

В вашем коде нет ничего плохого, у меня отлично работает следующее, когда у меня есть файл .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 или его эквивалента и проверьте.

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

person paxdiablo    schedule 25.03.2009

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

person shreyu108    schedule 18.01.2012

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

person cdhw    schedule 14.05.2014