throw new IOException("EXT2 implementation is currently readonly");
if(fileOffset > getLength()) throw new IOException("Can't write beyond the end of the file! (fileOffset: "+ fileOffset+", getLength()"+getLength()); if(off+len>src.length) throw new IOException("src is shorter than what you want to write");  log.debug("write(fileOffset="+fileOffset+", src, off, len="+len+")");  final long blockSize = iNode.getExt2FileSystem().getBlockSize(); long blocksAllocated = iNode.getAllocatedBlockCount(); long bytesWritten=0; while( bytesWritten < len ) { long blockIndex  = (fileOffset+bytesWritten) / blockSize; long blockOffset = (fileOffset+bytesWritten) % blockSize; long copyLength = Math.min(len-bytesWritten, blockSize - blockOffset);     byte[] dest; if( !( (blockOffset==0)&&(copyLength==blockSize) ) && (blockIndex < blocksAllocated)) dest = iNode.getDataBlock(blockIndex); else dest = new byte[(int)blockSize];  System.arraycopy( src, (int)(off+bytesWritten), dest, (int)blockOffset, (int)copyLength);   if(blockIndex >= blocksAllocated) { try{ iNode.allocateDataBlock(blockIndex); }catch(FileSystemException fe) { throw new IOException("Internal filesystem exception",fe); } blocksAllocated++; }   iNode.writeDataBlock(blockIndex, dest);  bytesWritten += copyLength; } iNode.setSize( fileOffset+len );   try{ iNode.update(); }catch(FileSystemException fse) { throw new IOException(fse); }   iNode.getExt2FileSystem().updateFS();
	public void write(long fileOffset, byte[] src, int off, int len) throws IOException {		throw new IOException("EXT2 implementation is currently readonly");			}