ucar.unidata.io.RandomAccessFile.readToByteChannel()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(5.9k)|赞(0)|评价(0)|浏览(118)

本文整理了Java中ucar.unidata.io.RandomAccessFile.readToByteChannel方法的一些代码示例,展示了RandomAccessFile.readToByteChannel的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。RandomAccessFile.readToByteChannel方法的具体详情如下:
包路径:ucar.unidata.io.RandomAccessFile
类名称:RandomAccessFile
方法名:readToByteChannel

RandomAccessFile.readToByteChannel介绍

[英]Read nbytes bytes, at the specified file offset, send to a WritableByteChannel. This will block until all bytes are read. This uses the underlying file channel directly, bypassing all user buffers.
[中]在指定的文件偏移量处读取nbytes字节,并发送到可写的ByTechannel。这将阻塞,直到读取所有字节。这将直接使用底层文件通道,绕过所有用户缓冲区。

代码示例

代码示例来源:origin: Unidata/thredds

  1. public long writeCurrentMessage( WritableByteChannel out) throws IOException {
  2. long nbytes = lastPos - startPos;
  3. return raf.readToByteChannel(out, startPos, nbytes);
  4. }

代码示例来源:origin: edu.ucar/bufr

  1. public long writeCurrentMessage( WritableByteChannel out) throws IOException {
  2. long nbytes = lastPos - startPos;
  3. return raf.readToByteChannel(out, startPos, nbytes);
  4. }

代码示例来源:origin: Unidata/thredds

  1. private long readRecordData(ucar.nc2.Structure s, Section section, WritableByteChannel out) throws java.io.IOException, InvalidRangeException {
  2. long count = 0;
  3. /* RegularIndexer index = new RegularIndexer( s.getShape(), recsize, recStart, section, recsize);
  4. while (index.hasNext()) {
  5. Indexer.Chunk chunk = index.next();
  6. count += raf.readBytes( out, chunk.getFilePos(), chunk.getNelems() * s.getElementSize());
  7. } */
  8. // LOOK this is the OTW layout based on netcdf-3
  9. // not sure this works but should give an idea of timing
  10. Range recordRange = section.getRange(0);
  11. /* int stride = recordRange.stride();
  12. if (stride == 1) {
  13. int first = recordRange.first();
  14. int n = recordRange.length();
  15. if (false) System.out.println(" read record " + first+" "+ n * header.recsize+" bytes ");
  16. return raf.readToByteChannel(out, header.recStart + first * header.recsize, n * header.recsize);
  17. } else { */
  18. for (int recnum : recordRange) {
  19. if (debugRecord) System.out.println(" read record " + recnum);
  20. raf.seek(header.recStart + recnum * header.recsize); // where the record starts
  21. count += raf.readToByteChannel(out, header.recStart + recnum * header.recsize, header.recsize);
  22. }
  23. // }
  24. return count;
  25. }

代码示例来源:origin: edu.ucar/netcdf

  1. private long readRecordData(ucar.nc2.Structure s, Section section, WritableByteChannel out) throws java.io.IOException, InvalidRangeException {
  2. long count = 0;
  3. /* RegularIndexer index = new RegularIndexer( s.getShape(), recsize, recStart, section, recsize);
  4. while (index.hasNext()) {
  5. Indexer.Chunk chunk = index.next();
  6. count += raf.readBytes( out, chunk.getFilePos(), chunk.getNelems() * s.getElementSize());
  7. } */
  8. // LOOK this is the OTW layout based on netcdf-3
  9. // not sure this works but should give an idea of timing
  10. Range recordRange = section.getRange(0);
  11. int stride = recordRange.stride();
  12. if (stride == 1) {
  13. int first = recordRange.first();
  14. int n = recordRange.length();
  15. if (false) System.out.println(" read record " + first+" "+ n * header.recsize+" bytes ");
  16. return raf.readToByteChannel(out, header.recStart + first * header.recsize, n * header.recsize);
  17. } else {
  18. for (int recnum = recordRange.first(); recnum <= recordRange.last(); recnum += recordRange.stride()) {
  19. if (debugRecord) System.out.println(" read record " + recnum);
  20. raf.seek(header.recStart + recnum * header.recsize); // where the record starts
  21. count += raf.readToByteChannel(out, header.recStart + recnum * header.recsize, header.recsize);
  22. }
  23. }
  24. return count;
  25. }

代码示例来源:origin: edu.ucar/cdm

  1. private long readRecordData(ucar.nc2.Structure s, Section section, WritableByteChannel out) throws java.io.IOException, InvalidRangeException {
  2. long count = 0;
  3. /* RegularIndexer index = new RegularIndexer( s.getShape(), recsize, recStart, section, recsize);
  4. while (index.hasNext()) {
  5. Indexer.Chunk chunk = index.next();
  6. count += raf.readBytes( out, chunk.getFilePos(), chunk.getNelems() * s.getElementSize());
  7. } */
  8. // LOOK this is the OTW layout based on netcdf-3
  9. // not sure this works but should give an idea of timing
  10. Range recordRange = section.getRange(0);
  11. int stride = recordRange.stride();
  12. if (stride == 1) {
  13. int first = recordRange.first();
  14. int n = recordRange.length();
  15. if (false) System.out.println(" read record " + first+" "+ n * header.recsize+" bytes ");
  16. return raf.readToByteChannel(out, header.recStart + first * header.recsize, n * header.recsize);
  17. } else {
  18. for (int recnum = recordRange.first(); recnum <= recordRange.last(); recnum += recordRange.stride()) {
  19. if (debugRecord) System.out.println(" read record " + recnum);
  20. raf.seek(header.recStart + recnum * header.recsize); // where the record starts
  21. count += raf.readToByteChannel(out, header.recStart + recnum * header.recsize, header.recsize);
  22. }
  23. }
  24. return count;
  25. }

代码示例来源:origin: edu.ucar/cdm

  1. while (index.hasNext()) {
  2. Layout.Chunk chunk = index.next();
  3. count += raf.readToByteChannel( out, chunk.getSrcPos(), chunk.getNelems());
  4. while (index.hasNext()) {
  5. Layout.Chunk chunk = index.next();
  6. count += raf.readToByteChannel( out, chunk.getSrcPos(), 2 * chunk.getNelems());
  7. while (index.hasNext()) {
  8. Layout.Chunk chunk = index.next();
  9. count += raf.readToByteChannel( out, chunk.getSrcPos(), 4 * chunk.getNelems());
  10. while (index.hasNext()) {
  11. Layout.Chunk chunk = index.next();
  12. count += raf.readToByteChannel( out, chunk.getSrcPos(), 8 * chunk.getNelems());

代码示例来源:origin: edu.ucar/netcdf

  1. while (index.hasNext()) {
  2. Layout.Chunk chunk = index.next();
  3. count += raf.readToByteChannel( out, chunk.getSrcPos(), chunk.getNelems());
  4. while (index.hasNext()) {
  5. Layout.Chunk chunk = index.next();
  6. count += raf.readToByteChannel( out, chunk.getSrcPos(), 2 * chunk.getNelems());
  7. while (index.hasNext()) {
  8. Layout.Chunk chunk = index.next();
  9. count += raf.readToByteChannel( out, chunk.getSrcPos(), 4 * chunk.getNelems());
  10. while (index.hasNext()) {
  11. Layout.Chunk chunk = index.next();
  12. count += raf.readToByteChannel( out, chunk.getSrcPos(), 8 * chunk.getNelems());

代码示例来源:origin: Unidata/thredds

  1. while (index.hasNext()) {
  2. Layout.Chunk chunk = index.next();
  3. count += raf.readToByteChannel( out, chunk.getSrcPos(), chunk.getNelems());
  4. while (index.hasNext()) {
  5. Layout.Chunk chunk = index.next();
  6. count += raf.readToByteChannel( out, chunk.getSrcPos(), 2 * chunk.getNelems());
  7. while (index.hasNext()) {
  8. Layout.Chunk chunk = index.next();
  9. count += raf.readToByteChannel( out, chunk.getSrcPos(), 4 * chunk.getNelems());
  10. while (index.hasNext()) {
  11. Layout.Chunk chunk = index.next();
  12. count += raf.readToByteChannel( out, chunk.getSrcPos(), 8 * chunk.getNelems());

相关文章