运行环境:
bash-3.2# uname -a
AIX hostname 3 5 00C758804C00
bash-3.2# /usr/ibm-java-ppc64-60/bin/java -version
java version "1.6.0"
Java(TM) SE Runtime Environment (build pap6460sr9fp2-20110627_03(SR9 FP2))
IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9 2.4 AIX ppc64-64 jvmap6460sr9-20110624_85526 (JIT enabled, AOT enabled)
J9VM - 20110624_085526
JIT - r9_20101028_17488ifx17
GC - 20101027_AA)
JCL - 20110530_01bash-3.2# echo $LANG
ZH_CN测试程序如下:import java.io.File;
public class test { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String strDir = "/data/test";
String tmpname;
File fdir = new File(strDir);
String[] flist = fdir.list();
for(int i=0;i< flist.length; i++) {
tmpname = strDir + File.separator + flist[i];
File tmpFile = new File(tmpname);
if (tmpFile.exists()) {
System.out.println(tmpname + " is existed.");
} else {
System.out.println(tmpname + " not is existed");
} } }}如果目录中有中文文件名的话,则显示“not is existed", 修改语言环境变量为GB18030后,运行能显示”Is existed”
。问题是遇到不同字符集的中文文件名后,怎么处理呢?
bash-3.2# uname -a
AIX hostname 3 5 00C758804C00
bash-3.2# /usr/ibm-java-ppc64-60/bin/java -version
java version "1.6.0"
Java(TM) SE Runtime Environment (build pap6460sr9fp2-20110627_03(SR9 FP2))
IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9 2.4 AIX ppc64-64 jvmap6460sr9-20110624_85526 (JIT enabled, AOT enabled)
J9VM - 20110624_085526
JIT - r9_20101028_17488ifx17
GC - 20101027_AA)
JCL - 20110530_01bash-3.2# echo $LANG
ZH_CN测试程序如下:import java.io.File;
public class test { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String strDir = "/data/test";
String tmpname;
File fdir = new File(strDir);
String[] flist = fdir.list();
for(int i=0;i< flist.length; i++) {
tmpname = strDir + File.separator + flist[i];
File tmpFile = new File(tmpname);
if (tmpFile.exists()) {
System.out.println(tmpname + " is existed.");
} else {
System.out.println(tmpname + " not is existed");
} } }}如果目录中有中文文件名的话,则显示“not is existed", 修改语言环境变量为GB18030后,运行能显示”Is existed”
。问题是遇到不同字符集的中文文件名后,怎么处理呢?
if (tmpFile.exists() && !tmpFile.getName().matches("\\W+")) {
System.out.println(tmpname + " is existed.");
} else {
System.out.println(tmpname + " not is existed");
}
这样就可以了
public class test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String strDir = "/data/INPUT/jpginfo/name";
String tmpname;
File fdir = new File(strDir);
String[] flist = fdir.list();
for(int i=0;i< flist.length; i++) {
tmpname = strDir + File.separator + flist[i];
File tmpFile = new File(tmpname);
if (tmpFile.exists()) {
System.out.println(tmpname + " is existed.");
} else {
System.out.println(tmpname + " not is existed");
}
}
}
}
关键发现了,还要处理,怎么打开文件,用FileInputStream打开会抛异常,找不到文件的。
java version "1.6.0"
Java(TM) SE Runtime Environment (build pxi3260sr9fp2-20110625_01(SR9 FP2))
IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9 2.4 Linux x86-32 jvmxi3260sr9-20110624_85526 (JIT enabled, AOT enabled)
J9VM - 20110624_085526
JIT - r9_20101028_17488ifx17
GC - 20101027_AA)
JCL - 20110530_01echo $LANG
zh_CN.UTF-8没有这种问题。