ls -l /dev/disk/by-label执行后的如下
[root@localhost ~]# ls -l /dev/disk/by-label
total 0
lrwxrwxrwx 1 root root 9 Dec 29 11:14 CTL\xc7\xc7\xd6\xce27 -> ../../sdb
#CTL\xc7\xc7\xd6\xce27是u盘的名字需要转成汉字
StringBuilder buff=new StringBuilder("lrwxrwxrwx 1 root root 9 Dec 29 11:14 CTL\\xc7\\xc7\\xd6\\xce27 -> ../../sdb");
String labelStr= buff.reverse().toString().split(">-")[1].trim().split(" ")[0];
StringBuilder label=new StringBuilder(labelStr);
label.reverse();
StringBuilder buf=new StringBuilder();
while(label.length()>0){
if(label.charAt(0)!='\\'){
buf.append(label.charAt(0));
label.deleteCharAt(0);
}else{
byte[] bytes=new byte[2];
//当前未处理字符串中第一个\x位置
int index1=label.indexOf("\\x");
//当前未处理字符串中第二个\x位置
int index2=label.indexOf("\\x",index1+2);//index1=0所以得从第三个开始数
try {
String first=label.substring(index1, index2).replace("\\x", "");
label.delete(0, index2);
bytes[0]=(byte)Integer.parseInt(first,16);
//当前未处理字符串中第二个\x位置
index2=label.indexOf("\\x",index1+2);//index1=0所以得从第三个开始数
if(index2==-1||index2>4){
index2=4;
}
String two=label.substring(index1, index2).replace("\\x", "");
label.delete(0, index2);
bytes[1]=(byte)Integer.parseInt(two,16);
buf.append(new String(bytes,"gbk"));
} catch (Exception e) {
label.delete(0, 4);//去除一位16进制
buf.append("◇");
System.out.println("16进制转汉字失败:"+e);
}
}
}