java 中 文件 形成,读取,上传 及 获取某个文件夹下的所有文件 的静态类

java 中 文件 形成,读取,上传 及 获取某个文件夹下的所有文件 的静态类

此文件会随着时间不断更新

package com.link.test.util;

import org.apache.commons.io.FileUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @author Ykenan
 */
public class FileUtil {

    /**
     * 形成文件夹和和文件的过程
     *
     * @param path      路径
     * @param inputFile 文件
     * @return 是否创建成功
     */
    private static boolean before(String path, File inputFile) {
        File inputPath = new File(path);
        try {
            return !inputPath.exists() && inputPath.mkdirs() && !inputFile.exists() && inputFile.createNewFile()
                    ||
                    !inputFile.exists() && inputFile.createNewFile()
                    ||
                    inputFile.exists();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return false;
    }

    /**
     * 文件形成
     *
     * @param path     形成路径
     * @param name     文件名称
     * @param suffix   文件后缀名
     * @param textarea 文件的内容
     * @return 文件名称
     */
    public static String formation(String path, String name, String suffix, String textarea) {
        String fileName = name + "." + suffix;
        try {
            File inputFile = new File(path, fileName);
            if (before(path, inputFile)) {
                FileOutputStream fileOutputStream = new FileOutputStream(inputFile);
                byte[] contentInBytes = textarea.getBytes();
                fileOutputStream.write(contentInBytes);
                fileOutputStream.flush();
                fileOutputStream.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return fileName;
    }

    /**
     * 文件形成
     *
     * @param path     形成路径
     * @param name     文件名称
     * @param suffix   文件后缀名
     * @param fileByte 文件的内容
     * @return 文件名称
     */
    public static String formationByByte(String path, String name, String suffix, byte[] fileByte) {
        String fileName = name + "." + suffix;
        try {
            File inputFile = new File(path, fileName);
            if (before(path, inputFile)) {
                FileOutputStream fileOutputStream = new FileOutputStream(inputFile);
                fileOutputStream.write(fileByte);
                fileOutputStream.flush();
                fileOutputStream.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return fileName;
    }

    /**
     * 文件读取
     *
     * @param filePath 文件的绝对路径
     * @return 文件的内容
     */
    public static List<String> read(String filePath, String encoding) {
        List<String> result = new ArrayList<>();
        try {
            BufferedReader br = getReader(filePath, encoding);
            String s;
            while ((s = br.readLine()) != null) {
                result.add(s);
            }
            br.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

    /**
     * @param filePath 文件路径
     * @param encoding 文件编码
     */
    private static BufferedReader getReader(String filePath, String encoding) throws IOException {
        return new BufferedReader(new InputStreamReader(new FileInputStream(filePath), encoding));
    }

    /**
     * 文件上传-形成新的文件
     *
     * @param path   形成路径
     * @param name   文件名称
     * @param suffix 文件后缀名
     * @param file   上传的文件
     * @return 文件名称
     */
    public static String upload(String path, String name, String suffix, MultipartFile file) {
        String newFileName = name + "." + suffix;
        try {
            File uploadFile = new File(path, newFileName);
            if (before(path, uploadFile)) {
                file.transferTo(uploadFile);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return newFileName;
    }

    /**
     * 文件上传-形成新的文件-适合异步
     *
     * @param path   形成路径
     * @param name   文件名称
     * @param suffix 文件后缀名
     * @param file   上传的文件
     * @return 文件名称
     */
    public static String uploadByStream(String path, String name, String suffix, MultipartFile file) {
        String newFileName = name + "." + suffix;
        try {
            File uploadFile = new File(path, newFileName);
            byte[] bytes = file.getBytes();
            if (before(path, uploadFile)) {
                FileOutputStream fileOutputStream = new FileOutputStream(uploadFile);
                fileOutputStream.write(bytes);
                fileOutputStream.flush();
                fileOutputStream.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return newFileName;
    }

    /**
     * 上传文件-读取文件内容
     *
     * @param file 文件
     * @return 内容
     */
    public static List<String> uploadReadFile(MultipartFile file, String charsetName) {
        BufferedReader reader = null;
        List<String> data = new ArrayList<>();
        try {
            Reader read = new InputStreamReader(file.getInputStream(), charsetName);
            reader = new BufferedReader(read);
            String tmpString;
            // 一行一行的读取文件里面的内容
            while ((tmpString = reader.readLine()) != null) {
                data.add(tmpString);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (reader != null) {
                    reader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return data;
    }


    /**
     * 获取某个文件夹下的所有文件
     *
     * @param path 文件夹的路径
     * @return List<String>
     */
    public static List<String> getAllFileName(String path) {
        File file = new File(path);
        String[] list = file.list();
        assert list != null;
        return Arrays.asList(list);
    }

    /**
     * 移动文件
     *
     * @param oldFile 移动前的路径文件
     * @param newPath 移动后的路径
     * @return boolean
     */
    public static boolean fileMove(String oldFile, String newPath) {
        try {
            // 源文件
            File file = new File(oldFile);
            File moveFile = new File(newPath);
            // 移动文件
            FileUtils.moveFileToDirectory(file, moveFile, true);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值