Подтвердить что ты не робот

Где разместить текстовый файл, который я хочу использовать в 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);
    }
}

}

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 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.

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

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

Ответ 4

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

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

getResource("Files/myFile.txt");

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

Ответ 5

В зависимости от вашего имени пакета Java-класса вы, вероятно, на 4 или 5 уровней вниз по структуре каталогов.

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

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

Ответ 7

MJB

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

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

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

  • если он работает, тогда class-path issue else GOK:)

Ответ 8

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

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

Ответ 9

Посмотрите на видео

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