1、错误代码
InputStream is = new BufferedInputStream(new ClassPathResource("fonts/SourceHanSans-Normal.ttc").getInputStream());
文件位置
2、正确代码
ClassPathResource classPathResource = new ClassPathResource("fonts/SourceHanSans-Normal.ttc");
InputStream is = classPathResource.getInputStream();
第一种方式中,ClassPathResource 的构造函数是根据类路径(classpath)来加载资源的,但是在某些情况下,特别是在部署到服务器后,类路径的获取可能会受到不同环境的影响,导致无法正确加载资源文件。因此,直接在构造函数中指定资源文件的路径可能会导致找不到文件或者资源加载失败的情况。
第二种方式中,先创建了一个 ClassPathResource 对象,然后通过该对象的 getInputStream() 方法获取输入流。这种方式更加稳健,因为 ClassPathResource 对象的构造函数会根据当前的类加载器来加载资源,而不依赖于环境的类路径设置。因此,通过 ClassPathResource 对象获取输入流的方式更加可靠,适用于部署到不同环境中的场景。