千家信息网

Java读linux文件名乱码应该如何解决

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,Java读linux文件名乱码应该如何解决?很多人都不太了解,今天小编为了让大家更加了解Java读linux文件名乱码的解决方法,所以给大家总结了以下内容,一起往下看吧。Java读linux系统文件文
千家信息网最后更新 2026年10月31日Java读linux文件名乱码应该如何解决Java读linux文件名乱码应该如何解决?很多人都不太了解,今天小编为了让大家更加了解Java读linux文件名乱码的解决方法,所以给大家总结了以下内容,一起往下看吧。

Java读linux系统文件文件名乱码的解决办法

1,问题描述

web应用想通过Java读取linux系统文件显示到web页面上,结果中文文件名出现乱码?

问题场景描述:当用户通过浏览器访问tomcat服务器,请求查看某一路径下文件列表信息,tomcat的web应用调用getFilesByPath(String path)方法读取文件列表信息响应请求,页面中文文件名出现乱码。

代码如下:

文件类

import java.io.Serializable;import java.util.Date;public class FileInfo implements Serializable{/*** */private static final long serialVersionUID = 1L;String name;long size;Date lastModified;boolean dir;public String getName() {return name;}public void setName(String name) {this.name = name;}public long getSize() {return size;}public void setSize(long size) {this.size = size;}public Date getLastModified() {return lastModified;}public void setLastModified(Date lastModified) {this.lastModified = lastModified;}public boolean isDir() {return dir;}public void setDir(boolean dir) {this.dir = dir;}}

java代码如下:

/*** 根据path路径查找出该路径下可视文件列表* @param path* @return*/public List getFilesByPath(String path){List fileList = new ArrayList();File file = new File(path);/*** 查找可视文件列表*/File[] files = file.listFiles(new FileFilter() {@Overridepublic boolean accept(File f) {return !f.isHidden();//过滤隐藏文件}});/*** java文件类型转换为web显示文件类*/for (File f : files) {FileInfo fileInfo = new FileInfo();fileInfo.setName(f.getName());fileInfo.setSize(f.length());fileInfo.setLastModified(new Date(f.lastModified()));                     fileInfo.setDir(f.isDirectory());}return fileList;}

当将读取文件信息显示到web页面上时,中文文件名出现乱码。

2,解决方案

web系统调用该方法读取文件列表后,中文命名的文件或文件夹显示为乱码。出现乱码往往都是数据流编码不一致导致的,检查数据流编码,首先查看tomcat服务器和页面显示编码都是utf-8编码,在查看linux系统编码为iso-8859-15,当然我们也知道java默认采用的是Unicode编码,但这种默认Unicode编码不是我们想要的utf-8编码,所以我们需要自己转码。

解决方案1:

将linux系统编码修改为utf-8,该方案比较简单,不过要求用户有系统root权限才可以修改。

解决方案2:

通过java程序转码,将系统编码转换为utf-8编码。

/*** 根据path路径查找出该路径下可视文件列表* @param path* @return*/public List getFilesByPath(String path){//获取系统编码String encoding = System.getProperty("file.encoding");List fileList = new ArrayList();File file = new File(path);/*** 查找可视文件*/File[] files = file.listFiles(new FileFilter() {@Overridepublic boolean accept(File f) {return !f.isHidden();}});/*** java文件类型转换为web显示文件类型*/for (File f : files) {FileInfo fileInfo = new FileInfo();try {//将系统编码encoding转换为utf-8编码fileInfo.setName(new String(f.getName().getBytes(encoding),"UTF-8"));} catch (UnsupportedEncodingException e) {e.printStackTrace();}fileInfo.setSize(f.length());fileInfo.setLastModified(new Date(f.lastModified()));                       fileInfo.setDir(f.isDirectory());}return fileList;}

页面显示文件名正常,但path参数在遍历文件的时候中文出现了乱码,导致路径不存在。

解决方法是将path参数从utf-8转换为系统编码,再根据path去遍历文件。

/*** 根据path路径查找出该路径下可视文件列表* @param path* @return*/public List getFilesByPath(String path) throws Exception{//获取系统编码String encoding = System.getProperty("file.encoding");List fileList = new ArrayList();try {//将path路径转码为系统编码File file = new File(new String(path.getBytes("UTF-8"),encoding));//判断文件路径是否存在,是否有读权限,如不存在或者没有权限则抛出异常if(file.exists() && file.isDirectory() && file.canRead()){/*** 查找可视文件*/File[] files = file.listFiles(new FileFilter() {@Overridepublic boolean accept(File f) {return !f.isHidden();}});/*** java文件类型转换为web显示文件类型*/for (File f : files) {FileInfo fileInfo = new FileInfo();//将系统编码encoding转换为utf-8编码fileInfo.setName(new String(f.getName().getBytes(encoding),"UTF-8"));fileInfo.setSize(f.length());fileInfo.setLastModified(new Date(f.lastModified()));fileInfo.setDir(f.isDirectory());}}else{throw new Exception("Paht:"+path+", exists:"+file.exists()+", canRead:"+file.isDirectory());}} catch (UnsupportedEncodingException e1) {e1.printStackTrace();}return fileList;}

这样就可以解决java读linux系统文件名乱码问题。。。

解决乱码问题就是从源头追溯的显示,一路纠结编码就这么简单。。。

关于Java读linux文件名乱码应该如何解决就分享到这里了,当然并不止以上和大家分析的办法,不过小编可以保证其准确性是绝对没问题的。希望以上内容可以对大家有一定的参考价值,可以学以致用。如果喜欢本篇文章,不妨把它分享出去让更多的人看到。

文件 编码 系统 乱码 文件名 路径 utf-8 类型 问题 页面 中文 方案 方法 信息 权限 解决方案 UTF-8 代码 内容 办法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 北京路客互联网科技有限公司 科技与互联网发展 北京互联网科技有限公司 凡科互联网科技 赫美联合互联网科技 上海亿帐通互联网科技 老年人脱离互联网科技的作文 深圳市运趣互联网科技有限公司 互联网科技实习生岗位职责 来此购互联网科技有限公司 互联网公司科技股 注册互联网科技公司经营范围大全 互联网科技的全部知识 徐州市互联网科技有限公司 城市宝互联网科技有限公司 吉林省码上互联网科技电话 容联科技互联网电商 互联网科技对化妆品行业 长沙易易互联网科技有限公司 互联网科技创业计划的风险分析 互联网金融科技 宜安科技 互联网金融 上海喔噻互联网科技 深圳国际航运科技和互联网 成都互联网科技公司工作好不好 迪庆互联网科技招生 互联网公司黑科技创始人 2021世界互联网领先科技成果发布 陕西九四连强互联网科技有限公司 安徽零酒互联网科技有限公司
0