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; } } }