Java чтение файла из консоли

181
30 ноября 2017, 01:46

Как прочитать имя файла из консоли на java, при том, что вводим как "c:/path/file.ext" или "file.ext" Как распознать какой путь ввели и открыть этот файл?

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file = reader.readLine();
BufferedReader reader1 = new BufferedReader(new FileReader(file));
String line = null;
while ((line = reader1.readLine()) != null) {
//непонятно
}
Answer 1

Для распознавания пути можно использовать метод isAbsolute() у экземпляра класса File:

File file1 = new File("file.ext");
File file2 = new File("C:\\path\\to\\file.ext");
System.out.println(file1.isAbsolute());    // false
System.out.println(file2.isAbsolute());    // true

Преобразовать путь из относительного в абсолютный можно следующими методами:

  • getAbsoluteFile() - возвращает новый экземпляр типа File с абсолютным путём
  • getAbsolutePath() - возвращает строку с абсолютным путём

Получить относительный путь из абсолютного чуть сложнее:

String workingDir = Paths.get("").toAbsolutePath().toString();
String relative = new File(workingDir).toURI().relativize(file2.toURI()).getPath();
System.out.println(relative);

Для этого получаем текущую рабочую директорию и смотрим путь относительно неё.

READ ALSO
Не удается запустить jetty

Не удается запустить jetty

Сейчас изучаю web-разработку на java, в уроках на Stepik используется jetty (https://stepikorg/course/146/syllabus) В конце первой части нужно скачать примеры из репа...

182
Tomcat deploy war with Spring Boot Aplication

Tomcat deploy war with Spring Boot Aplication

В Eclipce создал Spring Boot AplicationВ котором есть автоматически созданный класс ProjectAplication с методом main

152
Создание QueryDslPredicate в тестах

Создание QueryDslPredicate в тестах

У меня есть сервисные тесты (JUnit 5)В этих тестах вызываются сервисы, которые исполняются и потом вся полученная информация ассертится - всё...

147
Как правильно удалять body в box2d из world, чтоб не вылетало

Как правильно удалять body в box2d из world, чтоб не вылетало

Написал игру на движке libgdx, с использованием box2d для коллизииДля пуль использовал Body bullet, что бы обрабатывать коллизию и урон

207