Ява чтение текста из SRC без написания длинного пути - PullRequest
0 голосов
/ 07 сентября 2011

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

BufferedReader in = new BufferedReader(new FileReader("xxx.txt"));

Я не хочу:

BufferedReader in = new BufferedReader(new FileReader("C:\\Users\\abcde\\Desktop\\xxx.txt"));

есть ли способ показать этот текстовый файл?Кстати, я помещаю этот текстовый файл в исходники, но он не может прочитать!

Ответы [ 6 ]

1 голос
/ 07 сентября 2011

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

 String path = System.getProperty("user.dir");
      System.out.println(path + "\\disSoruCevap.txt");
      File file = new File(path + "\\disSoruCevap.txt");


      if (!file.exists()) {
          System.out.println("System couldnt file source file!");
          System.out.println("Application will explode");
      }

РЕДАКТИРОВАТЬ *

Пожалуйста, выберите один из ответов, используя потоки ресурсов, так как вы будете см. в комментариях использование user.dir не всегда безопасно.

0 голосов
/ 20 марта 2019
    InputStream input = Class_name.class.getResourceAsStream("/xxx.txt");
    InputStreamReader inputReader = new InputStreamReader(input);

    BufferedReader br = new BufferedReader(inputReader);
    String line = null;
    try {
        while((line = br.readLine())!=null){
            System.out.println(line);
        }
    } catch (IOException ex) {
        ex.printStackTrace();
    }

Вам не нужно писать или упоминать длинный путь. Используя этот код Class_name.class.getResourceAsStream ("/ xxx.txt"), вы можете легко получить ваш файл.

0 голосов
/ 26 марта 2016
URL fileURL= yourClassName.class.getResource("yourFileName.extension");
String myURL= fileURL.toString();

теперь вам не нужно длинное имя пути, ПЛЮС, это динамическое по своей природе, то есть, теперь вы можете переместить свой проект на любой компьютер, любой диск.
Это потому, что он обращается к URL, используя ваше местоположение CLASS, а не любое статическое расположение (например, c: \ folder \ ab.mp3, тогда вы не сможете получить доступ к этому файлу, если переместитесь на диск D, потому что тогда вам придется переключиться на D: /folder/ab.mp3 вручную, что по своей природе статично)
(ПРИМЕЧАНИЕ: просто сохраните этот файл в своем проекте)

Вы можете использовать fileURL в качестве: File file = new File (fileURL.toURI ());
Вы можете использовать myURL как: Media musicFile = new Media (myURL); // в javaFX, которой нужна строка, а не URL файла

0 голосов
/ 07 сентября 2011

BufferedReader in = new BufferedReader(new FileReader("xxx.txt")); работает нормально, потому что когда вы запускаете свое приложение в IDE, xxx.txt явно лежит в рабочем каталоге Java.Рабочий каталог является функцией операционной системы и не может быть изменен.Есть несколько способов справиться с этим.

1 - использовать конструктор файлов new File(parent, filename); и загружать родительский элемент, используя константу public static final или свойство (передаваемое из командной строки или иным образом)

3 - или используйте InputStream in = YourClass.class.getClassLoader().getResourceAsStream("xxx.txt");- при условии, что ваш файл xxx.txt упакован в том же каталоге, что и YourClass

0 голосов
/ 07 сентября 2011

Попробуйте:

InputStream is = ClassLoader.getSystemResourceAsStream("xxx.txt");
BufferedReader in = new BufferedReader(new InputStreamReader(is));

В зависимости от того, где именно находится ваш файл по сравнению с корнем вашего пути к классам, вам может потребоваться заменить xxx.txt3 на /xxx.txt.

0 голосов
/ 07 сентября 2011

Вы ищете:

BufferedReader in = new BufferedReader(getClass().getResourceAsStream("/xxx.txt"));

Это загрузит xxx.txt из вашего файла JAR (или из любого файла JAR в вашем пути к классам, у которого этот файл находится в корневом каталоге).

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