linux获取U盘label

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);
                    }


                }
            }

 
  

你可能感兴趣的:(Java,linux)