class DiskOperatingSystem:
def init(self, disk_size=100):
self.disk = [None] * disk_size
self.free_blocks = set(range(disk_size))
self.file_table = {}
def allocate_block(self):
if not self.free_blocks:
return None
block_number = self.free_blocks.pop()
return block_number
def deallocate_block(self, block_number):
self.free_blocks.add(block_number)
for file_name, file_blocks in self.file_table.items():
if block_number in file_blocks:
file_blocks.remove(block_number)
if not file_blocks:
del self.file_table[file_name]
def write_file(self, file_name, data):
file_blocks = []
for char in data:
block_number = self.allocate_block()
if block_number is None:
print(f"Not enough space to write file '{file_name}'.")
return
self.disk[block_number] = char
file_blocks.append(block_number)
self.file_table[file_name] = file_blocks
def read_file(self, file_name):
if file_name not in self.file_table:
print(f"File '{file_name}' not found.")
return
file_blocks = self.file_table[file_name]
return "".join([self.disk[block_number] for block_number in file_blocks])
def delete_file(self, file_name):
if file_name not in self.file_table:
print(f"File '{file_name}' not found.")
return
file_blocks = self.file_table[file_name]
for block_number in file_blocks:
self.deallocate_block(block_number)
del self.file_table[file_name]
disk_os = DiskOperatingSystem()
while True:
print("\nDisk Operating System Menu:")
print(“1. Write a file写入文件”)
print(“2. Read a file读取文件”)
print(“3. Delete a file删除文件”)
print(“4. Exit退出”)
choice = input("Enter your choice: 输入你的选择")
if choice == "1":
file_name = input("Enter file name: ")
data = input("Enter data to write: ")
disk_os.write_file(file_name, data)
elif choice == "2":
file_name = input("Enter file name to read: ")
print(disk_os.read_file(file_name))
elif choice == "3":
file_name = input("Enter file name to delete: ")
disk_os.delete_file(file_name)
elif choice == "4":
break
else:
print("Invalid choice. Try again.")