Example #1
0
  public void deleteStream(String streamName) throws IOException {
    if (raFile == null) {
      throw new IOException("MultiFile closed");
    }

    for (DirectoryBlock block : directoryBlocks) {
      Long offset = block.removeStream(streamName);
      if (offset != null) {
        block.write(raFile);

        FileBlock file = new FileBlock(offset.longValue());
        file.read(raFile);
        FreeBlock free = new FreeBlock(offset.longValue());
        free.write(raFile);
        freeBlocks.add(free);

        long next = file.getHeader().getNextBlock();
        while (next != 0) {
          file = new FileBlock(next);
          file.read(raFile);
          free = new FreeBlock(next);
          free.write(raFile);
          freeBlocks.add(free);
          next = file.getHeader().getNextBlock();
        }
        break;
      }
    }
  }