2015-05-03 4 views
3

Мне нужно прочитать файл, который может быть локальным или удаленным.
Путь к файлу или URI будет формироваться пользователем.
В настоящее время я читаю только локальный файл, таким образомЧтение файла из PATH URI

public String readFile(String fileName) 
{ 

    File file=new File(fileName); 
    BufferedReader bufferedReader = null; 
    try { 
     bufferedReader = new BufferedReader(new FileReader(file)); 
     StringBuilder stringBuilder = new StringBuilder(); 
     String line; 

     while ((line=bufferedReader.readLine())!=null) { 
      stringBuilder.append(line); 
      stringBuilder.append(System.lineSeparator()); 
     } 
     return stringBuilder.toString(); 
    } catch (FileNotFoundException e) { 
     System.err.println("File : \""+file.getAbsolutePath()+"\" Not found"); 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    finally { 
     try { 
      bufferedReader.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    return null; 
} 

Параметр String fileName является пользовательским вводом, который может быть путем к локальному файлу или URI
Как я могу изменить этот метод, чтобы работать как с Local path и URI?

+0

Возможно, вы можете взглянуть на эту ссылку - http://stackoverflow.com/questions/1316360/reading-a-remote-file-using-java –

ответ

4

Suposing вас есть URI в String fileName вы можете прочитать URL легко с:

URI uri = new URI(filename); 
File f = new File(uri); 

Проверить this link для дальнейшей информации

+0

pardon me, если я ошибаюсь, но я не вижу никаких 'toURI()' метод в классе 'String' – Saif

+0

извините, я забыл строку для преобразования uri xDDDD –

+0

спасибо. Я нашел хороший намек на ваш ответ, но на точный. пожалуйста, отредактируйте ответ, я думаю, что есть еще кое-что, чтобы это было ясно, например 'url.toURI()' на объекте URI (я думаю, опечатка), и мне не нужно рассматривать 'URL' – Saif

0

класса File также имеет конструктор на основе URI, так что легко сказать новое Файл (uri) .. и все остается неизменным. Однако URI зависит от системы, поскольку в спецификации указано «Абсолютный иерархический URI со схемой, равной« файлу », непустому компоненту пути и неопределенным полномочиям, запросам и фрагментам».

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

Смежные вопросы