Newer
Older
wicketspringdata / src / main / java / ru / simplex_software / wicket_springdata / util / FileUtil.java
package ru.simplex_software.wicket_springdata.util;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
 * Вспомогательный класс для работы с файлами.
 */
public class FileUtil {
    public static Logger LOG = LoggerFactory.getLogger(FileUtil.class);

    /**
     * Получение файла по имени.
     *
     * @param filename имя файла.
     * @return файл.
     */
    public static File getFile(String filename, String FOLDER) {
        return new File(FOLDER + filename);
    }

    /**
     * Сохранение файла.
     *
     * @param filename имя файла.
     * @param data     данные файла.
     */
    public static void saveFile(String filename, byte[] data, String FOLDER) {
        try {
            File file = new File(FOLDER + filename);
            FileUtils.writeByteArrayToFile(file, data);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * Получение массива байт из файла.
     *
     * @param filename имя файла.
     * @return массив байт файла.
     */
    public static byte[] getFileBytes(String filename, String FOLDER) {
        try (InputStream inputStream = new FileInputStream(new File(FOLDER + filename))) {
            return IOUtils.toByteArray(inputStream);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * Удаление файла.
     *
     * @param filename имя файла.
     */
    public static void deleteFile(String filename, String FOLDER) {
        try {
            Files.delete(Paths.get(FOLDER + filename));
        } catch (IOException e) {
            LOG.warn("Cannot delete file {}: {}", filename, e.getMessage());
        }
    }

    /**
     * Запись файла в поток.
     *
     * @param file     файл.
     * @param outputStream поток для записи.
     */
    public static void writeFileToStream(File file, OutputStream outputStream) {
        try {
            Path path = file.toPath();
            Files.copy(path, outputStream);
            outputStream.flush();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}