cari

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

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

1,问题描述

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

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

推荐教程:《java学习

代码如下:

文件类

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<FileInfo> getFilesByPath(String path){
List<FileInfo> fileList = new ArrayList<FileInfo>();
File file = new File(path);
/**
* 查找可视文件列表
*/
File[] files = file.listFiles(new FileFilter() {
@Override
public 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<FileInfo> getFilesByPath(String path){
//获取系统编码
String encoding = System.getProperty("file.encoding");
List<FileInfo> fileList = new ArrayList<FileInfo>();
File file = new File(path);
/**
* 查找可视文件
*/
File[] files = file.listFiles(new FileFilter() {
@Override
public 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<FileInfo> getFilesByPath(String path) throws Exception{
//获取系统编码
String encoding = System.getProperty("file.encoding");
List<FileInfo> fileList = new ArrayList<FileInfo>();
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() {
@Override
public 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系统文件名乱码问题。。。

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

Atas ialah kandungan terperinci Java读linux文件名乱码的解决办法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Apakah tetapan kebenaran untuk Debian ReaddirApakah tetapan kebenaran untuk Debian ReaddirApr 13, 2025 am 08:42 AM

Dalam sistem Debian, fungsi Readdir digunakan untuk menyenaraikan kandungan direktori. Walaupun Readdir sendiri tidak secara langsung mengendalikan keizinan sistem fail, keizinan direktori akan secara langsung mempengaruhi sama ada ia boleh dibaca dengan jayanya. Kebenaran Utama: Baca Kebenaran (R): Readdir memerlukan kebenaran membaca dari direktori untuk berfungsi. Hilang kebenaran membaca akan menyebabkan Readdir gagal. Gunakan arahan seperti chmodo rdirectory_name (tambah kebenaran baca untuk pengguna lain). Kebenaran Pelaksanaan (x): Walaupun anda telah membaca kebenaran, jika anda tidak mempunyai kebenaran pelaksanaan, anda tidak boleh memasukkan direktori, Readdir juga akan gagal. Menggunakan chmodo xdirector

Adakah antara muka pengguna Debian Readdir mesra?Adakah antara muka pengguna Debian Readdir mesra?Apr 13, 2025 am 08:39 AM

Fungsi Readdir dalam sistem Debian bukanlah komponen antara muka pengguna, tetapi panggilan sistem asas yang digunakan untuk membaca kandungan direktori. Ia biasanya dipanggil dalam program C sebagai sebahagian daripada operasi sistem fail. Readdir mengembalikan penunjuk ke struktur yang direka, yang mengandungi maklumat item direktori seperti nama fail. Pengalaman pengguna Readdir bergantung pada bagaimana ia digunakan dan reka bentuk aplikasi peringkat atasnya. Alat baris arahan: Dalam sistem Debian, banyak alat baris arahan (seperti LS dan cari) Gunakan Readdir untuk melaksanakan fungsi pelayaran direktori. Alat ini biasanya mempunyai antara muka baris arahan yang baik, yang memudahkan pengguna untuk menyenaraikan, mencari dan mengurus fail melalui arahan dan pilihan ringkas.

Cara melihat status thread dalam log tomcatCara melihat status thread dalam log tomcatApr 13, 2025 am 08:36 AM

Untuk melihat status thread dalam log tomcat, anda boleh menggunakan kaedah berikut: TomcatmanagerWeb antara muka: Masukkan alamat pengurusan TOMCAT (biasanya http: // localhost: 8080/pengurus) di pelayar, dan anda boleh melihat status thread selepas log. kolam benang Tomcat. Pilih dalam JConsole

Cara Menetapkan Tahap Log Debian ApacheCara Menetapkan Tahap Log Debian ApacheApr 13, 2025 am 08:33 AM

Artikel ini menerangkan cara menyesuaikan tahap pembalakan pelayan Apacheweb dalam sistem Debian. Dengan mengubah suai fail konfigurasi, anda boleh mengawal tahap maklumat log yang direkodkan oleh Apache. Kaedah 1: Ubah suai fail konfigurasi utama untuk mencari fail konfigurasi: Fail konfigurasi apache2.x biasanya terletak di direktori/etc/apache2/direktori. Nama fail mungkin apache2.conf atau httpd.conf, bergantung pada kaedah pemasangan anda. Edit Fail Konfigurasi: Buka Fail Konfigurasi dengan Kebenaran Root Menggunakan Editor Teks (seperti Nano): Sudonano/ETC/APACHE2/APACHE2.CONF

Cara Mencari IP Khusus dalam Log Debian ApacheCara Mencari IP Khusus dalam Log Debian ApacheApr 13, 2025 am 08:30 AM

Dalam sistem Debian, log akses Apache dan log ralat biasanya disimpan dalam direktori/var/log/apache2/direktori. Artikel ini akan membimbing anda cara menggunakan alat baris arahan untuk mencari pembalakan untuk alamat IP tertentu. Terminal Terbuka: Mulakan terminal sistem Debian anda. Masukkan direktori log Apache: Gunakan arahan CD untuk menavigasi ke direktori log Apache: CD/VAR/LOG/APACHE2/Cari alamat IP tertentu: Gunakan arahan GREP untuk mencari alamat IP tertentu. Sebagai contoh, untuk mencari rekod akses untuk alamat IP 192.168.1.100, laksanakan arahan berikut: GREP'192.168.1.100

debian readdir的错误处理机制是什么debian readdir的错误处理机制是什么Apr 13, 2025 am 08:27 AM

Dalam sistem Debian, fungsi Readdir digunakan untuk melintasi kandungan direktori. Walau bagaimanapun, operasi Readdir boleh gagal kerana pelbagai sebab, seperti direktori sasaran tidak wujud atau kebenaran tidak mencukupi. Pengendalian ralat yang berkesan adalah penting untuk memastikan keteguhan program. Kaedah berikut dapat membantu anda menangani kemungkinan kesilapan dalam fungsi Readdir: Kaedah 1: Periksa nilai pulangan apabila fungsi Readdir berjaya, mengembalikan penunjuk ke struktur dirent, yang mengandungi maklumat item direktori. Mengembalikan Null atas kegagalan. Oleh itu, pastikan anda menyemak nilai pulangan:#termasuk#termasuk#termasuk#termasuk#termasukIntMain () {struct

Panduan Pembangunan Plug-In Gitlab di DebianPanduan Pembangunan Plug-In Gitlab di DebianApr 13, 2025 am 08:24 AM

Membangunkan plugin Gitlab pada Debian memerlukan beberapa langkah dan pengetahuan tertentu. Berikut adalah panduan asas untuk membantu anda memulakan proses ini. Memasang GitLab terlebih dahulu, anda perlu memasang GitLab pada sistem Debian anda. Anda boleh merujuk kepada manual pemasangan rasmi GitLab. Dapatkan token akses API sebelum melakukan integrasi API, anda perlu mendapatkan token akses API Gitlab terlebih dahulu. Buka papan pemuka Gitlab, cari pilihan "AccessTokens" dalam tetapan pengguna, dan menghasilkan token akses baru. Akan dijana

Cara Mencari 404 Kesalahan dalam Log Debian ApacheCara Mencari 404 Kesalahan dalam Log Debian ApacheApr 13, 2025 am 08:21 AM

Dalam sistem Debian, log akses Apache dan log ralat biasanya disimpan dalam direktori/var/log/apache2/direktori. Untuk cepat mencari 404 kesilapan, anda boleh menggunakan arahan GREP untuk mencari kod status "404" dalam log akses (biasanya Access.log). Buka terminal dan laksanakan arahan berikut: grep'404 '/var/log/apache2/access.log Perintah ini akan mencari garis yang mengandungi "404" (perhatikan ruang) dalam log akses, yang mewakili 404 ralat. Perlu mencari 404 kesilapan dalam tempoh masa tertentu? Anda boleh menggunakan arahan Awk dan Grep dalam kombinasi: Contohnya

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual