文件异步读取 java

耗用时间(秒)
RandomAccessFile RandomAccessFile 95.848
BufferedInputStream + DataInputStream BufferedOutputStream + DataOutputStream 2.935
BufferedRandomAccessFile BufferedOutputStream + DataOutputStream 2.813
BufferedRandomAccessFile BufferedRandomAccessFile 2.453
BufferedRandomAccessFile 优 BufferedRandomAccessFile优 2.197
BufferedRandomAccessFile 完 BufferedRandomAccessFile完 0.401
MappedByteBuffer+ RandomAccessFile MappedByteBuffer+ RandomAccessFile 1.209


做了一个视频断点续传的功能,开始使用的 RamdomAccessFile 实现的发现速度太慢了。后来换成 MappedByteBuffer + RandomAccessFile实现


实例如下:

RandomAccessFile raf = new RandomAccessFile(newFile, "rw");
                        long fileLength = Long.valueOf(newFile.length()).longValue();
//                        raf.seek(start_point==null?fileLength:Long.parseLong(start_point));
//                        raf.write(buffer);
                        FileChannel fc = raf.getChannel();
                        MappedByteBuffer out = fc.map(FileChannel.MapMode.READ_WRITE, 0, fileLength + length);
                        out.position(start_point == null ? (int) fileLength : Integer.parseInt(start_point));
                        out.put(buffer);
                        out.force();
                        fc.close();
                        is.close();

你可能感兴趣的:(buffer,java,null,java)