Где поместить текстовый файл, который я хочу использовать в eclipse?

мне нужно прочитать текстовый файл при запуске программы. Я использую eclipse и начал новый проект java. В моей папке проекта я получил папку " src "и стандартную" системную библиотеку JRE " + staedteliste.формат txt... Я просто не знаю, куда положить текстовый файл. Я буквально перепробовал все папки, которые только мог придумать....Я не могу использовать "жестко" путь, потому что текстовый файл должен быть включен в мое приложение...

Я использую следующий код для чтения файла, но я получаю это ошибка:

Error:java.io.FileNotFoundException:staedteliste.txt(No such file or directory)

public class Test {

ArrayList<String[]> values;

public static void main(String[] args) {
    // TODO Auto-generated method stub

    URL url = Test.class.getClassLoader().getResource("src/mjb/staedteliste.txt");
    System.out.println(url.getPath()); // I get a nullpointerexception here!
    loadList();
}

public static void loadList() {
    BufferedReader reader;
    String zeile = null;

    try {
        reader = new BufferedReader(new FileReader("src/mjb/staedteliste.txt"));
        zeile = reader.readLine();          

        ArrayList<String[]> values = new ArrayList<String[]>();

        while (zeile != null) {             
            values.add(zeile.split(";"));
            zeile = reader.readLine();
        }
        System.out.println(values.size());
        System.out.println(zeile);

    } catch (IOException e) {
        System.err.println("Error :"+e);
    }
}

}

9 ответов


сначала спросите себя: Является ли ваш файл внутренние компонент вашего приложения? (Это обычно означает, что он упакован внутри вашего JAR или WAR, если это веб-приложение; как правило, это какой-то файл конфигурации или статический ресурс, только для чтения).

если ответ-да, вы не хотите указать абсолютный путь для файла. Но вы ни хотите получить к нему доступ с помощью относительный путь (как ваш пример), потому что Java предполагает, что путь относительно "текущей директории". Обычно предпочтительным способом для этого сценария является его загрузка относительно от classpath.

Java предоставляет вам загрузчика.методу getresource() способ для этого. И Eclipse (в обычной настройке) предполагает src/ должен быть в корне вашего пути к классам, так что после компиляции он копирует все в ваш выходной каталог (bin/), файлы java в скомпилированная форма (.class ), остальное как есть.

так, например, если вы размещаете файл в src/Files/myfile.txt он будет скопирован во время компиляции, чтобы bin/Files/myfile.txt ; и, во время выполнения, bin/ будет в (корень) вашем classpath. Итак, позвонив getResource("/Files/myfile.txt") (в некоторых его вариантах) вы сможете прочитать его.

редактировать: далее, Если ваш файл концептуально привязан к классу java (например, некоторые com.example.MyClass есть MyClass.cfg соответствующий файл конфигурации), вы можете использовать метод getResource () из класса и используйте (ресурс) относительный путь:MyClass.getResource("MyClass.cfg"). Затем файл будет искать в пути к классам, но с предварительно добавленным пакетом классов. Таким образом, в этом сценарии вы обычно размещаете свой MyClass.cfg и MyClass.java файлы в том же каталоге.


один путь -

  1. добавьте файл, с которым вы работаете, в classpath
  2. используйте загрузчик ресурсов, чтобы найти файл:

        URL url = Test.class.getClassLoader().getResource("myfile.txt");
        System.out.println(url.getPath());
        ...
    
  3. открыть

Предположим, у вас есть проект под названием "TestProject" на Eclipse, и ваша папка рабочей области находится по адресу E:/eclipse/workspace - ... Когда вы создаете проект Eclipse, ваш путь к классам тогда e:/eclipse/workspace/TestProject. Когда вы пытаетесь прочитать " staedteliste.txt" ,вы пытаетесь получить доступ к файлу по адресу e:/eclipse/workspace/TestProject/staedteliste.txt.

если вы хотите иметь отдельную папку для вашего проекта, то создайте папку файлов под TestProject и после этого получите доступ к файлу с (относительный путь)/Files/staedteliste.txt. Если вы поместите файл под папка src, тогда вы должны получить к ней доступ с помощью /src/staedteliste.txt. Папка файлов внутри папки src будет /src/Files/staedteliste.txt

вместо использования относительного пути вы можете использовать абсолютный, добавив e:/eclipse/workspace/ в начале, но использование относительного пути лучше, потому что вы можете перемещать проект, не беспокоясь о рефакторинге, пока структура папок проекта одинакова.


просто создайте папку Files под src и поместите туда свой файл. Это будет выглядеть как src/Files/myFile.txt

Примечание: В своем коде вам нужно указать следующее Files/myFile.txt например,

getResource("Files/myFile.txt");

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


в зависимости от имени пакета класса Java вы, вероятно, на 4 или 5 уровнях ниже структуры каталогов.

Если ваш пакет классов Java, например, com.сайте StackOverflow.проект, тогда ваш класс находится в src/com/stackoverflow / project.

вы можете либо двигаться вверх по структуре каталогов с несколькими ../, или вы можете переместить текстовый файл в том же самом пакете как класс. Было бы проще переместить текстовый файл.


вы, вероятно, должны взглянуть на различные ароматы getResource в классе ClassLoader:http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassLoader.html


в mjb

пожалуйста, попробуйте это

  1. в eclipse "щелкните правой кнопкой мыши" на текстовом файле, который вы хотите использовать, см. и скопируйте полный путь, хранящийся в HDD, как (если в UNIX " / home/sjaisawal/Space-11.4-template/provisioning/devenv/Test/src/testpath / testfile.txt")

  2. поместите этот полный путь и попробуйте.

  3. если он работает, то проблема class-path else GOK:)


Если это простой проект, вы должны иметь возможность перетащить файл txt прямо в папку проекта. В частности," папка проекта " будет папкой самого высокого уровня. Я попытался сделать это (для домашнего проекта, который я делаю), поместив txt-файл в папку src, но это не сработало. Но, в конце концов, я решил поместить его в файл проекта.

хороший учебник для этогоhttp://www.vogella.com/articles/JavaIO/article.html. Я использовал это как введение в i / o, и это помогло.


взгляните на это видео

все, что вам нужно сделать, это выбрать файл (предполагая, что это та же простая форма txt-файла), затем перетащите его в проект в Eclipse, а затем поместите его туда. Выберите Копировать вместо ссылки, поскольку она более гибкая. Вот и все - я только что попробовал.