file.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package filesystem
  2. import (
  3. "io"
  4. "os"
  5. "github.com/v2fly/v2ray-core/v4/common/buf"
  6. "github.com/v2fly/v2ray-core/v4/common/platform"
  7. "github.com/v2fly/v2ray-core/v4/common/platform/filesystem/fsifce"
  8. )
  9. var NewFileSeeker fsifce.FileSeekerFunc = func(path string) (io.ReadSeekCloser, error) {
  10. return os.Open(path)
  11. }
  12. var NewFileReader fsifce.FileReaderFunc = func(path string) (io.ReadCloser, error) {
  13. return os.Open(path)
  14. }
  15. var NewFileWriter fsifce.FileWriterFunc = func(path string) (io.WriteCloser, error) {
  16. return os.Create(path)
  17. }
  18. func ReadFile(path string) ([]byte, error) {
  19. reader, err := NewFileReader(path)
  20. if err != nil {
  21. return nil, err
  22. }
  23. defer reader.Close()
  24. return buf.ReadAllToBytes(reader)
  25. }
  26. func WriteFile(path string, payload []byte) error {
  27. writer, err := NewFileWriter(path)
  28. if err != nil {
  29. return err
  30. }
  31. defer writer.Close()
  32. return buf.WriteAllBytes(writer, payload)
  33. }
  34. func ReadAsset(file string) ([]byte, error) {
  35. return ReadFile(platform.GetAssetLocation(file))
  36. }
  37. func CopyFile(dst string, src string) error {
  38. bytes, err := ReadFile(src)
  39. if err != nil {
  40. return err
  41. }
  42. f, err := os.OpenFile(dst, os.O_CREATE|os.O_WRONLY, 0o644)
  43. if err != nil {
  44. return err
  45. }
  46. defer f.Close()
  47. _, err = f.Write(bytes)
  48. return err
  49. }