zoukankan      html  css  js  c++  java
  • 长文件名处理

    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));
    }
  • 相关阅读:
    [记录] 原生JS 的常用方法封装
    [记录] JavaScript 中的DOM操作
    [记录] JavaScript 中的正则表达式(案例分析)
    图片查看器插件(带缩略图) viewer.js
    (二) 美化滚动条 JScrollPane.js
    关于数据库存储过程管理的一点建议
    根据属性名称来改变XML节点值
    hdu 3911 Black And White
    poj 3667 Hotel
    hdu 4217 Data Structure?
  • 原文地址:https://www.cnblogs.com/dkblog/p/1980875.html
Copyright © 2011-2022 走看看