file.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import os
  2. from datetime import datetime
  3. from darabonba.date import Date
  4. class File:
  5. def __init__(self, path: str):
  6. self._path = path
  7. self._file = None
  8. @staticmethod
  9. def exists(path: str) -> bool:
  10. return os.path.exists(path)
  11. def path(self) -> str:
  12. return self._path
  13. def length(self) -> int:
  14. return os.path.getsize(self._path)
  15. def create_time(self) -> Date:
  16. ctime = os.path.getctime(self._path)
  17. return Date(datetime.fromtimestamp(ctime).isoformat())
  18. def modify_time(self) -> Date:
  19. mtime = os.path.getmtime(self._path)
  20. return Date(datetime.fromtimestamp(mtime).isoformat())
  21. def read(self, size: int) -> bytes:
  22. if self._file is None:
  23. self._file = open(self._path, 'rb')
  24. data = self._file.read(size)
  25. if not data:
  26. self._file.close()
  27. self._file = None
  28. return data
  29. def write(self, data: bytes) -> None:
  30. with open(self._path, 'ab') as f:
  31. f.write(data)
  32. @staticmethod
  33. def create_read_stream(path: str):
  34. return open(path, 'rb')
  35. @staticmethod
  36. def create_write_stream(path: str):
  37. return open(path, 'ab')