(self, block)
| 85 | |
| 86 | # Remove Old File |
| 87 | def remove_file(self, block): |
| 88 | assert type(block) is int and 1 <= block <= self.__blocks |
| 89 | assert self.is_file(block) |
| 90 | data = self.__disk.read_file(block) |
| 91 | size = ord(data[2]) |
| 92 | blocks = data[size+3+4:] |
| 93 | pointers = [(ord(blocks[index*2]) << 8) + ord(blocks[index*2+1]) \ |
| 94 | for index in range(len(blocks) / 2)] |
| 95 | for pointer in pointers: |
| 96 | self.__disk.close_block(pointer) |
| 97 | self.__disk.close_file(block) |
| 98 | root = (ord(data[0]) << 8) + ord(data[1]) |
| 99 | data = self.__disk.read_directory(root) |
| 100 | size = ord(data[2]) |
| 101 | header = data[:size+3] |
| 102 | contents = data[size+3:] |
| 103 | pointers = [(ord(contents[index*2]) << 8) + ord(contents[index*2+1]) \ |
| 104 | for index in range(len(contents) / 2)] |
| 105 | assert block in pointers |
| 106 | pointers.remove(block) |
| 107 | assert block not in pointers |
| 108 | contents = ''.join([chr(pointer >> 8) + chr(pointer & 0xFF) \ |
| 109 | for pointer in pointers]) |
| 110 | data = header + contents |
| 111 | self.__disk.write_directory(root, data) |
| 112 | return root |
| 113 | |
| 114 | # Read From File |
| 115 | def read_file(self, block): |
no test coverage detected