import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import org.junit.Test;
public class FileChannelInTest {
@Test
public void testFileRead1() throws Exception{
Charset charset = Charset.forName("utf-8");
RandomAccessFile aFile = new RandomAccessFile("D:/dump01.txt", "rw");
FileChannel inChannel = aFile.getChannel();
// 从FileChannel中读取数据
ByteBuffer byteBuffer = ByteBuffer.allocate(48);
long start = System.currentTimeMillis();
String read = "";
while (true) {
int eof = inChannel.read(byteBuffer);
if (eof == -1)
break;
byteBuffer.flip();
read = charset.decode(byteBuffer)+"";
System.out.print(read);
byteBuffer.clear();
}
System.out.println("spending : " + (System.currentTimeMillis()-start));
inChannel.close();
aFile.close();
}
@Test
public void testFileRead2() throws Exception{
RandomAccessFile aFile = new RandomAccessFile("D:/dump01.txt", "rw");
FileChannel inChannel = aFile.getChannel();
ByteBuffer buf = ByteBuffer.allocate(48);
int bytesRead = inChannel.read(buf);
while (bytesRead != -1) {
System.out.println("Read " + bytesRead);
buf.flip();
while (buf.hasRemaining()) {
System.out.print((char) buf.get());
}
buf.clear();
bytesRead = inChannel.read(buf);
}
aFile.close();
}
}
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import org.junit.Test;
public class FileChannelOutTest {
@Test
public void testFileWrite1() throws Exception{
String newData = "New String to write to file..." + System.currentTimeMillis();
RandomAccessFile aFile = new RandomAccessFile("D:/channelOutTest.txt", "rw");
FileChannel outChannel = aFile.getChannel();
ByteBuffer buf = ByteBuffer.allocate(48);
buf.clear();
buf.put(newData.getBytes());
buf.flip();
while(buf.hasRemaining()) {
outChannel.write(buf);
}
aFile.close();
}
}