Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / BufferedReader / 4 сообщений из 4, страница 1 из 1
11.02.2015, 15:46
    #38877148
qi_ip
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BufferedReader
Добрый день!
Подскажите, как работает данный класс и в частности метод readLine при считывании строк из текстового файла. Грузится ли весь считываемый файл в память или же нет.

Заранее сорри за нубский вопрос.
Спасибо!
...
Рейтинг: 0 / 0
11.02.2015, 16:26
    #38877212
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BufferedReader
можно заглянуть в сорцы (благо сейчас ide позволяет это сделать одним кликом)
а можно пропробовать загрузить файл размером в 5Гб и посмотреть.
а можно открыть доки и почитать
...
Рейтинг: 0 / 0
11.02.2015, 17:21
    #38877270
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BufferedReader
qi_ip,

С фига бы он всё в память грузил? Только строку. Если весь файл одна строка, то весь будет в памяти.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
String readLine(boolean ignoreLF) throws IOException {
        StringBuffer s = null;
        int startChar;

        synchronized (lock) {
            ensureOpen();
            boolean omitLF = ignoreLF || skipLF;

        bufferLoop:
            for (;;) {

                if (nextChar >= nChars)
                    fill();
                if (nextChar >= nChars) { /* EOF */
                    if (s != null && s.length() > 0)
                        return s.toString();
                    else
                        return null;
                }
                boolean eol = false;
                char c = 0;
                int i;

                /* Skip a leftover '\n', if necessary */
                if (omitLF && (cb[nextChar] == '\n'))
                    nextChar++;
                skipLF = false;
                omitLF = false;

            charLoop:
                for (i = nextChar; i < nChars; i++) {
                    c = cb[i];
                    if ((c == '\n') || (c == '\r')) {
                        eol = true;
                        break charLoop;
                    }
                }

                startChar = nextChar;
                nextChar = i;

                if (eol) {
                    String str;
                    if (s == null) {
                        str = new String(cb, startChar, i - startChar);
                    } else {
                        s.append(cb, startChar, i - startChar);
                        str = s.toString();
                    }
                    nextChar++;
                    if (c == '\r') {
                        skipLF = true;
                    }
                    return str;
                }

                if (s == null)
                    s = new StringBuffer(defaultExpectedLineLength);
                s.append(cb, startChar, i - startChar);
            }
        }
    }
...
Рейтинг: 0 / 0
12.02.2015, 08:32
    #38877577
qi_ip
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BufferedReader
Blazkowicz, большое спасибо за ответ!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / BufferedReader / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]