AsynchronousFileChannel的例子
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
import java.nio.file.OpenOption;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.concurrent.Future;
public class async_file {
static final int TRANS_RRQ = 1;
static final int TRANS_NAM = 2;
static final int TRANS_DATA = 3;
static final int TRANS_ACK = 4;
static final int TRANS_ERROR = 5;
static final int TRANS_END = 6;
AsynchronousFileChannel afc = null;
ByteBuffer byteBuffer = ByteBuffer.allocateDirect(1024);
{
System.out.println(byteBuffer.order() + " " + ByteOrder.nativeOrder());
byteBuffer.order(ByteOrder.nativeOrder());
}
public async_file() {
try {
afc = AsynchronousFileChannel.open(Paths.get("ftext.bin"),
StandardOpenOption.CREATE, StandardOpenOption.WRITE);
afc.truncate(0); //如果存在则截断为零
byteBuffer.clear();
System.out.println(byteBuffer.order());
byteBuffer.putShort((short) TRANS_RRQ);
byteBuffer.putShort((short) 0);
byteBuffer.put("recent".getBytes());
byteBuffer.flip();
byteBuffer.limit(0x20);
System.out.println(byteBuffer.remaining()+" "+byteBuffer.limit());
Future<Integer> fw = afc.write(byteBuffer,afc.size());
while(!fw.isDone());
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new async_file();
}
}
新建文件用异步通道写32个字节的LITTLE_ENDIAN数据到文件中