All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.cosycode.ext.se.util.FileUtils Maven / Gradle / Ivy

Go to download

扩展模块, 用于存放一些非常用的工具或模块的扩展类, 例如在poi基础上扩展的excel的导入模块, 模拟按键模块

The newest version!
package com.github.cosycode.ext.se.util;

import lombok.extern.slf4j.Slf4j;

import java.io.*;

/**
 * Description : 
 * 

* created in 2021/4/30 * * @author CPF **/ @Slf4j public class FileUtils { /** * 判断文件的编码格式 * * @param fileName :file * @return 文件编码格式 */ public static String analysisTextFileEncode(File fileName) { try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(fileName))) { String charset = "GBK"; byte[] first3Bytes = new byte[3]; boolean checked = false; bis.mark(0); // 读者注: bis.mark(0);修改为 bis.mark(100);我用过这段代码,需要修改上面标出的地方。 // Wagsn 注:不过暂时使用正常,遂不改之 int read = bis.read(first3Bytes, 0, 3); if (read == -1) { bis.close(); return charset; // 文件编码为 ANSI } else if (first3Bytes[0] == (byte) 0xFF && first3Bytes[1] == (byte) 0xFE) { charset = "UTF-16LE"; // 文件编码为 Unicode checked = true; } else if (first3Bytes[0] == (byte) 0xFE && first3Bytes[1] == (byte) 0xFF) { charset = "UTF-16BE"; // 文件编码为 Unicode big endian checked = true; } else if (first3Bytes[0] == (byte) 0xEF && first3Bytes[1] == (byte) 0xBB && first3Bytes[2] == (byte) 0xBF) { charset = "UTF-8"; // 文件编码为 UTF-8 checked = true; } bis.reset(); if (!checked) { while ((read = bis.read()) != -1) { if (read >= 0xF0) { break; } if (0x80 <= read && read <= 0xBF) { break; } if (0xC0 <= read && read <= 0xDF) { read = bis.read(); if (0x80 <= read && read <= 0xBF) { // (0x80 - 0xBF),也可能在GB编码内 continue; } else { break; } } else if (0xE0 <= read && read <= 0xEF) { // 也有可能出错,但是几率较小 read = bis.read(); if (0x80 <= read && read <= 0xBF) { read = bis.read(); if (0x80 <= read && read <= 0xBF) { charset = "UTF-8"; break; } else { break; } } else { break; } } } } return charset; } catch (IOException e) { log.error("", e); } return "null"; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy