Sube txt problema de la basura archivo

1. Problema

Hoy en día, los colegas reflejan la existencia del problema de la basura ha subido el archivo txt y luego crear un nuevo archivo txt y no encontró ningún problema, y ​​finalmente con un colega me ha enviado un archivo txt lo probó y se encontró que realmente ilegible. Baidu un poco, que es causado por la codificación de archivo de formato txt.pantalla ilegible

2. Solución

Método 1:

Modificar el archivo txt formato de codificación, re-subida. archivo txt y modificar el nuevo formato de codificación predeterminado. [Cita] disposición
de conformidad con la nueva configuración de formato de archivo txt método de codificación en línea, que se encuentra demasiado complicado, si las computadoras del cliente se crean, una pérdida de tiempo.

método 2

El uso del código para resolver, necesitamos un sistema unificado convierte en un formato codificado.

la sección del código

Obtiene el archivo en formato txt codificación actual

/** 
 * 判断文件的编码格式 
 * @param InputStream :is
 * @return 文件编码格式 
 * @throws Exception 
 */  
public static String getCharset(InputStream is) throws IOException {
        BufferedInputStream bin = new BufferedInputStream(is);
        int p = (bin.read() << 8) + bin.read();//读取文件头前16位  
        String code = null;
        switch (p) {
            case 0xefbb:
                code = "UTF-8";
                break;
            case 0xfffe:
                code = "Unicode";
                break;
            case 0xfeff:
                code = "UTF-16";
                break;
            default:
                code = "GB2312";
        }
        return code;
    }

Unificada en UTF-8 archivos codificados

/**
 * 解决txt乱码问题
 * @param is
 * @param targetFile 转换完成后的新文件
 * @param code 需要转换的文件的编码格式
 * @return File 
 * @throws IOException
 */
    public static File FileTurnUTF8(InputStream is, File targetFile, String code) throws IOException {
        if (!targetFile.exists()) {
            targetFile.createNewFile();
        }
        BufferedReader br = null;
        BufferedWriter bw = null;
        br = new BufferedReader(new InputStreamReader(is, code));
        bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(targetFile), "UTF-8"));
        int i = 0;
        String str = "";
        while ((str = br.readLine()) != null) {
            byte[] bytes = str.getBytes("UTF-8");
            str = new String(bytes, 0, bytes.length);
            bw.write(str + "\r\n");
        }

        br.close();
        bw.close();
        return targetFile;
    }

Puesto que el extremo distal se hace pasar sobre el tipo MultipartFile, después de que se completó la conversión también necesitar ser convertido en MultipartFile Archivo.

/**
 * File 转 MultipartFile
 * 
 * @param file
 * @throws Exception
 */
    public MultipartFile fileToMultipartFile(File file) throws Exception {

        FileInputStream fileInput = new FileInputStream(file);
        MultipartFile toMultipartFile = new MockMultipartFile("file", file.getName(), "text/plain",
                        IOUtils.toByteArray(fileInput));
        toMultipartFile.getInputStream();
        return toMultipartFile;

    }

Los resultados completos

demostrado con éxito

Publicado 26 artículos originales · ganado elogios 6 · vistas 2958

Supongo que te gusta

Origin blog.csdn.net/weixin_45676630/article/details/101532633
Recomendado
Clasificación