/ / 测试文件分块方法 @Test public void testChunk ( ) throws IOException { File sourceFile = new File ( "F:/develop/ffmpeg/lucene.mp4" ) ; / / File sourceFile = new File ( "d:/logo.png" ) ; String chunkPath = "F:/develop/ffmpeg/chunk/" ; File chunkFolder = new File ( chunkPath ) ; if ( !chunkFolder. exists ( ) ) { chunkFolder.mkdirs ( ) ; } / / 分块大小 long chunkSize = 1024 * 1024 * 1 ; / / 分块数量 long chunkNum = ( long ) Math.ceil ( sourceFile.length ( ) * 1.0 / chunkSize ) ; if ( chunkNum < = 0 ) { chunkNum = 1 ; } / / 缓冲区大小 byte[] b = new byte[ 1024 ]; / / 使用RandomAccessFile访问文件 RandomAccessFile raf_read = new RandomAccessFile ( sourceFile , "r" ) ; / / 分块 for ( int i = 0 ;i < chunkNum;i + + ) { / / 创建分块文件 File file = new File ( chunkPath + i ) ; boolean newFile = file .createNewFile ( ) ; if ( newFile ) { / / 向分块文件中写数据 RandomAccessFile raf_write = new RandomAccessFile ( file , "rw" ) ; int len = ‐ 1 ; while ( ( len = raf_read. read ( b ) ) ! = ‐ 1 ) { raf_write. write ( b , 0 , len ) ; if ( file .length ( ) > chunkSize ) { break; } } raf_write. close ( ) ; } } raf_read. close ( ) ; } |