長檔名處理

來源:互聯網
上載者:User
Code:
/**
* 短檔案名稱處理方式處理長檔名, 名字前ShortFileNameLong位 +~+ 時間戳記 [+ .副檔名]; 中英文支援,字元長度(中文算2).
* @param s 字串
* @param max 最大數
* @param ShortFileNameLong 保留多少位
* @return
* 例:中中中中中中中中中中中中中中中中~1185169295390.zip
* 123456789012345678901234567890123456~1185163038890.zip
*/
public static String makeShortName(String s, int max, int ShortFileNameLong) {
if(s == null || s.equals("")){return s;}
char[] cs = s.toCharArray();
int count = 0;
int last = cs.length;
for(int i=0; i<cs.length; i++) {
if(cs[ i ]>255)
count+=2;
else
count++;
if(count>max) {
last = i+1;
break;
}
}
if(count<=max) // string is short or just the size!
return s;
// string is too long:
int dot = s.indexOf('.');
String suffix = String.valueOf(System.currentTimeMillis());
for(int i=last-1; i>=0; i--) {
if(cs[ i ]>255)
count-=2;
else
count--;
if(count<=ShortFileNameLong) {
if (dot < 0) {
return s.substring(0, i) + "~" + suffix;
}else{
String name = s.substring(0, dot);
String ext = s.substring(dot);// include .
if (ext.length() > i) {
ext = ext.substring(0, i);
}
if (name.length() > i) {
name = name.substring(0, i) + "~" + suffix;
} else {
name = name + "~" + suffix;
}
return name + ext;
}
}
}
return "~";
}

public static void main(String[] args) {
System.out.println(makeShortName("",100,32));
System.out.println(makeShortName(null,100,32));
char[] cs = new char[200];
Arrays.fill(cs, 'a');
String longName = new String(cs);
System.out.println(makeShortName(longName,100,32));
Arrays.fill(cs, 'b');
System.out.println(makeShortName(longName + "." + new String(cs),100,32));
System.out.println(makeShortName(longName + ".txt",100,32));
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.