Код ниже читает локальный файл.
final String filepath= "my/path/to/file.txt";
try (BufferedReader reader = Files.newBufferedReader(Paths.get(filepath))){
System.out.println("First line : "+reader.readLine());
}
Однако я хочу точный эквивалент, но с использованием URI.Поэтому мой новый код выглядит следующим образом:
final String filepath= "file:///my/path/to/file.txt";
try (BufferedReader reader = Files.newBufferedReader(Paths.get(new URI(filepath)))){
System.out.println("First line : "+reader.readLine());
}
И это хорошо работает, когда filepath
является абсолютным путем.Но я хочу, чтобы это работало даже с относительным путем (как в первом коде).
Как я могу это сделать?
РЕДАКТИРОВАТЬ:
Я использую решениеиспользовать «нормальный» путь, когда мне нужен локальный относительный путь, и URI в других случаях (абсолютный путь или удаленный).
Итак, мой код такой:
final String filepath= "my/path/to/file.txt"; // or "file:///my/path/to/file.txt";
final URI uri = new URI(filepath);
final Path path;
if(uri.getScheme()!=null) {
path = Paths.get(uri);
}else {
path = Paths.get(filepath);
}
try (BufferedReader reader = Files.newBufferedReader(path)){
System.out.println("First line : "+reader.readLine());
}
Это не совсемкрасиво, но работа сделана.Если есть лучшее решение, я все еще открыт для него.