class File:
def write(self, bytes: bytearray):
pass
class BufferedFile(File):
def __init__(self, f: File, buffer_size: int):
self.f = f
self.buffer_size = buffer_size
self.buffer = []
self.current_size = 0
def write(self, bytes: bytearray):
if self.current_size + len(bytes) < self.buffer_size:
self.buffer.append(bytes)
self.current_size += len(bytes)
elif len(bytes) >= self.buffer_size:
if self.buffer:
self.flush()
self.f.write(bytes)
else:
self.flush()
self.buffer.append(bytes)
self.current_size += len(bytes)
def flush(self):
if not self.buffer:
return
try:
self.f.write(b"".join(self.buffer))
self.current_size = 0
self.buffer = []
except IOError as e:
print(f"Error: {e}")