内容:通过NIO中的FileChannel完成文件的读、写、复制。
public class NioFileCopy {
private RandomAccessFile aFile = null;
private FileChannel inChannel = null;
private final ByteBuffer buf = ByteBuffer.allocate(1024);
public void doWrite() throws IOException {
aFile = new RandomAccessFile("C:/goods.txt", "rw");
inChannel = aFile.getChannel();
String newData = "New String to wirte to file... " + System.currentTimeMillis();
buf.clear();
buf.put(newData.getBytes());
buf.flip();
while (buf.hasRemaining())
inChannel.write(buf);
inChannel.close();
System.out.println("Write Over");
}
public void doRead() throws IOException {
aFile = new RandomAccessFile("C:/goods.txt", "rw");
inChannel = aFile.getChannel();
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();
}
public void doCopy() throws IOException {
aFile = new RandomAccessFile("C:/goods.txt", "rw");
inChannel = aFile.getChannel();
RandomAccessFile bFile = new RandomAccessFile("C:/22.log", "rw");
FileChannel outChannel = bFile.getChannel();
inChannel.transferTo(0, inChannel.size(), outChannel);
System.out.println("Copy over");
}
public static void main(String[] args) throws IOException {
NioFileCopy tool = new NioFileCopy();
//tool.doWrite();
//tool.doRead();
tool.doCopy();
}
}