Чтение онлайн

на главную - закладки

Жанры

Философия Java3

Эккель Брюс

Шрифт:

1

г

и

S

i

п

g

в

U

f

f

е

г

S

к

к

k

к

lim

pos |

Для

смешивания символов нам нужно записать символ с2 в позицию 0, a cl в позицию 1. Для этого можно обратиться за .«абсолютной» версией метода put, но мы приравняем позицию метке, что и делает метод resetQ:

| mar

1

г

1

г

и

S

i

п

g

в

U

f

f

е

г

S

к

к

)

к

з

cap |

>

г

1

г

и

S

i

п

g

в

U

f

f

е

г

S

i

к

k

к

Rim

На следующей итерации значение метки приравнивается позиции:

mar

cap |

>

г

>

г

и

S

i

п

g

в

U

f

f

е

г

s

k

к

k

к

lim

pos I

Процесс продолжается до тех пор, пока не будет просмотрен весь буфер. В конце цикла while

позиция находится в конце буфера. При выводе буфера на печать распечатываются только символы, находящиеся между позицией и предельным значением. Поэтому, если вы хотите распечатать буфер целиком, придется установить позицию на начало буфера, используя для этого метод rewind. Вот в каком состоянии находится буфер после вызова метода rewind (значение метки стало неопределенным):

г

и

S

i

п

g

в

U

f

f

е

г

S

i

к

k

к

posl

lim

При следующем вызове symmetricScramble процесс повторяется, и буфер CharBuffer возвращается к своему изначальному состоянию.

Отображаемые в память файлы

Механизм отображения файлов в память позволяет создавать и изменять файлы, размер которых слишком велик для прямого размещения в памяти. В таком случае вы считаете, что файл целиком находится в памяти, и работаете с ним как с очень большим массивом. Такой подход значительно упрощает код изменения файла. Небольшой пример:

//. io/LargeMappedFiles.java

// Создание очень большого файла, отображаемого в память

// {RunByHand}

import java.nio.*;

import java nio.channels.*;

import java.io.*;

import static net.mindview.util.Print.*.

public class LargeMappedFiles {

static int length = 0x8FFFFFF, // 128 MB public static void main(String[] args) throws Exception { MappedByteBuffer out =

new RandomAccessFileC'test.dat". "rw").getChannel .map(Fi1eChannel.MapMode.READ_WRITE. 0. length); for(int i = 0; i < length; i++)

out.put((byte)'x'); print("Запись завершена"); for(int i = length/2; i < length/2 +6; i++) printnb((char)out.get(i));

}

} ///:-

Чтобы одновременно выполнять чтение и запись, мы начинаем с создания объекта RandomAccessFile, получаем для этого файла канал, а затем вызываем метод тар, чтобы получить буфер MappedByteBuffer, который представляет собой разновидность буфера прямого доступа. Заметьте, что необходимо указать начальную точку и длину участка, который будет проецироваться, то есть у вас есть возможность отображать маленькие участки больших файлов.

Поделиться:
Популярные книги

Тыл-фронт

Головин Андрей
Проза:
военная проза
проза прочее
5.00
рейтинг книги
Тыл-фронт

Двойник короля 15

Скабер Артемий
15. Двойник Короля
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Двойник короля 15

Кодекс Крови. Книга ХVI

Борзых М.
16. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХVI

Дневники 1928-1929

Пришвин Михаил Михайлович
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Дневники 1928-1929

Газлайтер. Том 5

Володин Григорий
5. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 5

Последний Паладин. Том 12

Саваровский Роман
12. Путь Паладина
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Последний Паладин. Том 12

Хозяин Стужи 5

Петров Максим Николаевич
5. Злой Лед
Фантастика:
аниме
фэнтези
попаданцы
6.60
рейтинг книги
Хозяин Стужи 5

Последний Паладин. Том 5

Саваровский Роман
5. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 5

Точка Бифуркации

Смит Дейлор
1. ТБ
Фантастика:
боевая фантастика
7.33
рейтинг книги
Точка Бифуркации

Глава рода

Шелег Дмитрий Витальевич
5. Живой лёд
Фантастика:
боевая фантастика
6.55
рейтинг книги
Глава рода

Наемный корпус

Вайс Александр
5. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
Наемный корпус

Этот мир не выдержит меня. Том 2

Майнер Максим
2. Первый простолюдин в Академии
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Этот мир не выдержит меня. Том 2

Кодекс Охотника. Книга XXXV

Винокуров Юрий
35. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXXV

Граф

Ланцов Михаил Алексеевич
6. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Граф