• 长文件名处理


    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));
    }
  • 相关阅读:
    python二进制转换
    git的使用
    c++primer plus笔记
    c++primer 学习笔记
    二分查找
    字符串全排列
    斐波那契数列
    JavaScript 相关
    HTTP记录
    前端笔记
  • 原文地址:https://www.cnblogs.com/dkblog/p/1980875.html
Copyright © 2020-2023  润新知