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));
    }
  • 相关阅读:
    费曼学习法
    Ubuntu修改系统默认编码
    如何在Ubuntu 18.04上安装和使用PostgreSQL
    Bash简介 & Bash是如何处理命令的
    ubuntu环境变量的三种设置方法
    psql 工具详细使用介绍
    使用ubuntu server18.04 搭建odoo12运行环境
    Ubuntu修改时区和更新时间
    Ubuntu18.04修改apt-get源
    对表内数据间隔特定的长度求和
  • 原文地址:https://www.cnblogs.com/dkblog/p/1980875.html
Copyright © 2011-2022 走看看