FileDecompressor.js 959 B

1234567891011121314151617181920212223242526272829303132333435
  1. const fs = require('fs-extra');
  2. const decompress = require('decompress');
  3. const FileDetector = require('./FileDetector');
  4. class FileDecompressor {
  5. constructor() {
  6. this.detector = new FileDetector();
  7. }
  8. async decompressFile(filename, outputDir) {
  9. const fileType = await this.detector.detectFile(filename);
  10. if (!(fileType.ext == 'zip' || fileType.ext == 'bz2'))
  11. return filename;
  12. const files = await decompress(filename, outputDir);
  13. let result = filename;
  14. let max = 0;
  15. if (!files.length) {
  16. //ищем файл с максимальным размером
  17. for (let file of files) {
  18. const stats = await fs.stat(file);
  19. if (stats.size > max) {
  20. result = file;
  21. max = stats.size;
  22. }
  23. }
  24. }
  25. return result;
  26. }
  27. }
  28. module.exports = FileDecompressor;