Acerca de la incapacidad de leer los recursos estáticos de la ruta raíz del proyecto después de iniciar el proyecto SpringBoot a través del paquete jar

Prólogo: Esto se descubrió anoche cuando se implementó un proyecto, regístrelo aquí

Acerca de la incapacidad de leer los recursos estáticos de la ruta raíz del proyecto después de iniciar el proyecto SpringBoot a través del paquete jar

Descripción del problema

Después de implementar un proyecto, abrí la página del proyecto para realizar pruebas y descubrí que una página de consulta no pudo realizar la consulta y saltó automáticamente a la página de error. Miré el registro y descubrí que la lectura de un archivo falló, como se muestra a continuación:

mensaje de error

inserte la descripción de la imagen aquí

El directorio donde se encuentra el archivo a leer

inserte la descripción de la imagen aquí

El código para la parte de lectura de archivos.

    public String readFileContent() {
    
    
        File file = new File("src/main/resources/static/ticket/station_name.txt");
        BufferedReader reader = null;
        StringBuffer sbf = new StringBuffer();

        try {
    
    
            reader = new BufferedReader(new FileReader(file));
            String tempStr;
            while ((tempStr = reader.readLine()) != null) {
    
    
                sbf.append(tempStr);
            }
            reader.close();
            return sbf.toString();
        } catch (IOException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            if (reader != null) {
    
    
                try {
    
    
                    reader.close();
                } catch (IOException e1) {
    
    
                    e1.printStackTrace();
                }
            }
        }
        return sbf.toString();
    }

En ese momento, estaba bastante confundido, porque este archivo aún se puede leer durante la prueba local, ¿por qué no se puede encontrar en el servidor? ? ?

Solución

Revisé Internet y descubrí que hay un problema con el uso de Archivo para obtener recursos locales en el servidor.

Motivo:
los archivos del directorio de recursos existen en el archivo xxx.jar y no hay una ruta real en el disco del servidor. En realidad, es una ruta dentro del contenedor.

Solución 1 (método estúpido):
cargue el archivo que se va a leer en el directorio correspondiente del servidor y cambie la ruta del archivo de lectura a la ruta correspondiente al archivo en el servidor.

Solución 2:
use el flujo de entrada, de la siguiente manera:

    public String readFileContent() throws Exception{
    
    

        String filePath = "static/ticket/station_name.txt";
        InputStream inputStream = null;
        BufferedReader reader = null;
        StringBuffer sbf = new StringBuffer();

        //文件读取
        inputStream = this.getClass().getClassLoader().getResourceAsStream(filePath);
        reader = new BufferedReader(new InputStreamReader(inputStream));
        String tempStr;
        while ((tempStr = reader.readLine()) != null) {
    
    
            sbf.append(tempStr);
        }
        reader.close();
        return sbf.toString();
    }
    public String readFileContent() throws Exception{
    
    

        String filePath = "static/ticket/station_name.txt";
        ClassPathResource resource = new ClassPathResource(filePath);
        InputStream inputStream = null;
        BufferedReader reader = null;
        StringBuffer sbf = new StringBuffer();

        //文件读取
        inputStream = resource.getInputStream();
        reader = new BufferedReader(new InputStreamReader(inputStream));
        String tempStr;
        while ((tempStr = reader.readLine()) != null) {
    
    
            sbf.append(tempStr);
        }
        reader.close();
        return sbf.toString();
    }

Cabe señalar aquí que la ruta utilizada es la ruta de recursos.

PD: También puedes ir a mi blog personal para ver más contenido
Dirección del blog personal: blog de un compañero de clase de Xiaoguan

Supongo que te gusta

Origin blog.csdn.net/weixin_45784666/article/details/121450856
Recomendado
Clasificación