Here you can find the source of readCharArray(ReadableByteChannel channel, ByteBuffer buffer, char[] charArray)
private static char[] readCharArray(ReadableByteChannel channel, ByteBuffer buffer, char[] charArray) throws IOException
//package com.java2s; /**//from ww w. ja v a 2 s . c o m * Copyright (c) 2002-2014 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] * * This file is part of Neo4j. * * Neo4j is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.ReadableByteChannel; public class Main { private static char[] readCharArray(ReadableByteChannel channel, ByteBuffer buffer, char[] charArray) throws IOException { buffer.clear(); int charsLeft = charArray.length; int maxSize = buffer.capacity() / 2; int offset = 0; // offset in chars while (charsLeft > 0) { if (charsLeft > maxSize) { buffer.limit(maxSize * 2); charsLeft -= maxSize; } else { buffer.limit(charsLeft * 2); charsLeft = 0; } if (channel.read(buffer) != buffer.limit()) { return null; } buffer.flip(); int length = buffer.limit() / 2; buffer.asCharBuffer().get(charArray, offset, length); offset += length; buffer.clear(); } return charArray; } }