packagecom.test;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.RandomAccessFile;importjava.nio.ByteBuffer;importjava.nio.channels.FileChannel;public classGetChannel1 {private static int BSIZE = 1024;public static void main(String[] args) throwsException {
GetChannel1 getChannel1= newGetChannel1();
getChannel1.writeFile("file.txt", "hello,");
getChannel1.addToFile("file.txt", "world");
getChannel1.readFile("file.txt");
}public void readFile(String fileName) throwsIOException {
FileChannel fc= newFileInputStream(fileName).getChannel();
ByteBuffer buff=ByteBuffer.allocate(BSIZE);
fc.read(buff);/*** Flips this buffer. The limit is set to the current position
* and then the position is set to zero.
* If the mark is defined then it is discarded.
After a sequence of channel-read or put operations,
invoke this method to prepare for a sequence of channel-write
or relative get operations.*/buff.flip();/** Tells whether there are any elements between the current position and the limit.*/
while(buff.hasRemaining()) {
System.out.print((char) buff.get());
}
fc.close();
}//向文件中增加内容
public void addToFile(String fileName, String content) throwsIOException {
FileChannel fc= new RandomAccessFile(fileName, "rw").getChannel();
fc.position(fc.size());
fc.write(ByteBuffer.wrap(content.getBytes()));
fc.close();
}//写文件
public void writeFile(String fileName, String content) throwsFileNotFoundException, IOException {
FileChannel fc= newFileOutputStream(fileName).getChannel();
fc.write(ByteBuffer.wrap(content.getBytes()));
fc.close();
}
}