Maven版本应用中TXT文件的放置、读取方法及CSS修改疑问
迁移至CSS环境后无法读取平面文件的解决方案
文件正确放置位置
- Maven项目中,运行时需要读取的资源文件必须放在
src/main/resources目录下。如果你的代码里用的是/localidades.txt这种classpath根路径的引用,直接把localidades.txt放在src/main/resources根目录即可,Maven默认会将该目录下的文件打包到classpath中(最终位于jar包的classes目录下)。 - 若后续需要按包路径组织资源,可在
src/main/resources下创建对应包结构(比如src/main/resources/com/yourpackage/),此时读取路径需去掉开头的/,使用相对当前类的路径。
读取方式验证与调整
你当前使用的Display.getInstance().getResourceAsStream(getClass(), nombreArchivo)是Codename One框架的资源读取方法,路径规则如下:
- 路径以
/开头:从classpath根目录查找文件 - 路径不带
/:从当前类所在的包路径下查找文件
关键检查点
- 确认文件已被正确打包:打开生成的jar包,检查
classes目录下是否存在localidades.txt。如果没有,需在Maven的pom.xml中确保资源配置正确(默认配置已包含,但自定义配置时需避免排除.txt文件):
<build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.txt</include> </includes> </resource> </resources> </build>
- 添加空流判断:如果
getResourceAsStream返回null,说明文件未找到,需抛出明确异常快速定位问题,修改leeArchivo方法:
private Vector leeArchivo(String nombreArchivo) throws IOException { InputStream lectura = Display.getInstance().getResourceAsStream(getClass(), nombreArchivo); if (lectura == null) { throw new FileNotFoundException("未找到文件: " + nombreArchivo); } // 后续原有逻辑... }
是否需要修改CSS?
不需要。该问题属于资源文件路径与Java读取逻辑的问题,和CSS样式无关,无需调整CSS代码。
代码优化建议
- 替换
Vector为ArrayList:Vector是线程安全但性能较低的旧集合类,推荐使用ArrayList替代; - 使用try-with-resources自动关闭流:避免资源泄漏,简化代码:
private List<Localidades> leeArchivo(String nombreArchivo) throws IOException { try (InputStream lectura = Display.getInstance().getResourceAsStream(getClass(), nombreArchivo)) { if (lectura == null) { throw new FileNotFoundException("未找到文件: " + nombreArchivo); } List<Localidades> datos = new ArrayList<>(); String registro; while ((registro = leeRegistro(lectura)) != null) { String[] tmp = registro.split(","); datos.add(new Localidades(Integer.parseInt(tmp[0]), tmp[1], tmp[2])); } return datos; } }
内容的提问来源于stack exchange,提问作者Rubén Villarreal
相关产品推荐
相关产品推荐

