Java: чтение текстовых файлов из каталога, из Интернета - PullRequest
1 голос
/ 29 мая 2011

Кто-нибудь знает, как рекурсивно читать файлы из определенного каталога в Интернете, на Java?Я хочу прочитать все текстовые файлы из этого веб-каталога: http://www.cs.ucdavis.edu/~davidson/courses/170-S11/Female/

Я знаю, как читать несколько файлов, находящихся в папке на моем компьютере, и я умею читать в одном файле изинтернет.Но как я могу читать несколько файлов в Интернете, без жесткого кодирования URL-адресов в?

Материал, который я пробовал:

// List the files on my Desktop
final File folder = new File("/Users/crystal/Desktop");
File[] listOfFiles = folder.listFiles();

for (int i = 0; i < listOfFiles.length; i++) {
    File fileEntry = listOfFiles[i];
    if (!fileEntry.isDirectory()) {
        System.out.println(fileEntry.getName());
    }
}

Еще одна вещь, которую я попробовал:

// Reading data from the web 
try 
{
    // Create a URL object
    URL url = new URL("http://www.cs.ucdavis.edu/~davidson/courses/170-S11/Female/5_1_1.txt");

    // Read all of the text returned by the HTTP server
    BufferedReader in = new BufferedReader (new InputStreamReader(url.openStream()));

    String htmlText;      // String that holds current file line

    // Read through file one line at a time. Print line
    while ((htmlText = in.readLine()) != null) 
    {
        System.out.println(htmlText);
    }
    in.close();
} catch (MalformedURLException e) {
    e.printStackTrace();
} catch (IOException e) {
    // If another exception is generated, print a stack trace
    e.printStackTrace();
}

Спасибо!

1 Ответ

0 голосов
/ 29 мая 2011

Так как в упомянутом вами URL включены индексы, вам повезло.Здесь у вас есть несколько вариантов.

  1. Анализируйте html, чтобы найти атрибут тегов a, используя SAX2 или любой другой анализатор XML.Я думаю, что htmlunit также сработает.
  2. Используйте немного магии регулярных выражений для сопоставления всей строки между <a href=" и "> и используйте ее в качестве URL для чтения.

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

Вот пример регулярного выражения, которое должно соответствовать тому, что вы хотите.Он ловит несколько дополнительных ссылок, но вы должны быть в состоянии отфильтровать их.

<a\ href="(.+?)">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...