Загрузка файла и чтение его в ArrayList? - PullRequest
1 голос
/ 19 июня 2010
public void getWebContent() throws Exception {
    Scanner in = new Scanner(System.in);
    System.out.println("Input URL:");
    fileURL = in.nextLine();
    if (!fileURL.startsWith("http://")) {
        System.out.println("URL not valid! Please make sure 'http://' prefixes");
        System.out.println("the web address!");
    } else {
        Scanner url = new Scanner(new URL(fileURL).openStream());
        System.out.println("Here are the contents:");
        while (url.hasNextLine()) {
            System.out.println(url.nextLine());
        }
        System.out.println("Would you like this to be your new Diary?");
        command = in.nextLine();
        if (command.equalsIgnoreCase("yes")) {
            diary.clear();
            while (url.hasNextLine()) {
                diary.add(url.nextLine());
            }
            System.out.println("New Diary created.");
        } else {
            System.out.println("Download cancelled. Returning to first command entry.");
        }
    }
}

Итак, насколько мне известно, этот метод getWebContent() прекрасно работает, пока не попытается добавить прочитанный веб-файл в ArrayList<String> diary.Честно говоря, я не знаю, что не так, но я знаю, что вы, умные штаны, можете это понять:)!

Ответы [ 2 ]

1 голос
/ 19 июня 2010
    while (url.hasNextLine()) {
        System.out.println(url.nextLine());
    }

Это очистит поток. Ничто не будет добавлено к List, потому что все данные были прочитаны.

Кроме того, Scanner очень чувствителен к ошибкам кодирования - см. Метод ioException() - чтобы сделать ваш код переносимым, вы должны использовать соответствующую кодировку для данных символов, которые вы читаете.

1 голос
/ 19 июня 2010

К тому времени, когда вы достигнете этой точки в коде, вы уже прочитали все строки в Сканере с помощью:

while (url.hasNextLine()) {
    System.out.println(url.nextLine());
}

Сканер имеет курсор, который перемещается при вызове nextLine ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...