FileResourceProvider.java 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package me.ag2s.epublib.domain;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. /**
  7. * 用于创建epub,添加大文件(如大量图片)时容易OOM,使用LazyResource,避免OOM.
  8. */
  9. public class FileResourceProvider implements LazyResourceProvider {
  10. //需要导入资源的父目录
  11. String dir;
  12. /**
  13. * 创建一个文件夹里面文件夹的LazyResourceProvider,用于LazyResource。
  14. *
  15. * @param parentDir 文件的目录
  16. */
  17. public FileResourceProvider(String parentDir) {
  18. this.dir = parentDir;
  19. }
  20. /**
  21. * 创建一个文件夹里面文件夹的LazyResourceProvider,用于LazyResource。
  22. *
  23. * @param parentFile 文件夹
  24. */
  25. @SuppressWarnings("unused")
  26. public FileResourceProvider(File parentFile) {
  27. this.dir = parentFile.getPath();
  28. }
  29. /**
  30. * 根据子文件名href,再父目录下读取文件获取FileInputStream
  31. *
  32. * @param href 子文件名href
  33. * @return 对应href的FileInputStream
  34. * @throws IOException 抛出IOException
  35. */
  36. @Override
  37. public InputStream getResourceStream(String href) throws IOException {
  38. return new FileInputStream(new File(dir, href));
  39. }
  40. }