Получить локальный файл, используя путь Java 7

Как вы можете получить локальный файл, используя "java.nio.file.Paths" для Java 7 или любого другого API . У меня есть эта строка кода, но он возвращает неправильный формат каталога.

public static InputStream readfile(String filename) throws FileNotFoundException
{
persistenceService = (PersistenceService) ServiceManager.lookup(PersistenceService.class.getCanonicalName());
URL url = Paths.get(filename).toUri().toURL();
FileContents fileContents = persistenceService.get(url);

Результат при печати URL-адреса:

file:/C:/Users/username/Desktop/filedirectory/filename

Должно быть:

file:C:/Users/username/Desktop/filedirectory/filename

Как я могу избавиться от этого первым / или это неправильный метод? Скопировал два URL-адреса в проводнике Windows, первый открывает веб-страницу и не может отображаться, второй открывает нужный мне файл.

1 ответ

Решение

Если вы хотите получить содержимое локального файла, вам не нужно использовать PersistenceService, вы можете просто использовать java.nio.file.Files учебный класс:

Path path = FileSystems.getDefault().getPath(filename);
List<String> lines = Files.readAllLines(path, charset);

Если вы хотите использовать javax.jnlp.PersistenceService, прочитайте документацию по http://docs.oracle.com/javase/7/docs/jre/api/javaws/jnlp/javax/jnlp/PersistenceService.html:

Приложению разрешен доступ только к данным, хранящимся с URL-адресом, основанным на его кодовой базе. Например, учитывая кодовую базу http://www.mysite.com/apps/App1/, приложению будет разрешен доступ к данным по соответствующим URL-адресам:

  • http://www.mysite.com/apps/App1/
  • http://www.mysite.com/apps/
  • http://www.mysite.com/

Похоже, что URL начинаются с file: не должны быть использованы.

Другие вопросы по тегам