zoukankan      html  css  js  c++  java
  • Offset文件名(绝对偏移量)

    public class StoreUtils {
     
        /**
         * 绝对偏移量->文件名.
         * 
         * 
         * @param offset    偏移量
         * @return          文件名
         */
        public static String nameFromOffset(final long offset) {
            final NumberFormat nf = NumberFormat.getInstance();
            nf.setMinimumIntegerDigits(20);
            nf.setMaximumFractionDigits(0);
            nf.setGroupingUsed(false);
     
            return nf.format(offset);
        }
        
        /**
         * 文件名->偏移量.
         * 
         * <li> 文件名可以是偏移量
         * <li> 文件名可以是偏移量+后缀名
         * 
         * 
         * @param name
         * @return      文件名为空时,返回-1
         */
        public static long offsetFromName(final String name){
            if(StringUtils.isBlank(name)){
                return -1;
            }
            String digital = name;
            if(name.contains(ZQueueConstants.POSTFIX_SEPERATOR)){
               digital = name.substring(0, name.indexOf(ZQueueConstants.POSTFIX_SEPERATOR));
            }
            
            return Long.parseLong(digital);
            
        }
     
        /**
         * 文件名->byte[].
         * 
         * @param name
         * @return
         */
        public static byte[] byteFromName(final String name){
            if(StringUtils.isBlank(name)){
                return null;
            }
            return name.getBytes();
        }
        
        /**
         * 绝对偏移量->byte[].
         * 
         * @param offset
         * @return
         */
        public static byte[] byteFromLong(final long offset){
            String tem = nameFromOffset(offset);
            return byteFromName(tem);
        }
        
        /**
         * bytes->String
         * 
         * @param bytes
         * @return
         */
        public static String nameFromByte(final byte[] bytes){
            if(null == bytes){
                return null;
            }
            return new String(bytes);
        }
        
        /**
         * bytes->long
         * 
         * @param bytes
         * @return
         */
        public static long longFromByte(final byte[] bytes){
            return offsetFromName(nameFromByte(bytes));
        }
        
        /**
         * 将buf中的数据,每interval取一下,共取num次
         * 
         * @param buf       待转换的内容
         * @param interval  间隔
         * @param num       次数
         * @return          byte->long
         */
        public static long[] longFromByteBuffer(final ByteBuffer buf, final int interval, final int num){
            if( null == buf){
                return null;
            }
            
            byte[] bytes = new byte[interval];
            long[] result = new long[num];
            for(int i = 0; i< num; i++){
                buf.get(bytes, i*interval, (i+1)*interval-1);
                result[i] = longFromByte(bytes);
            }
            
            return result;
        }    
        
    }
  • 相关阅读:
    C#中 @ 的用法
    ASP.NET页面间传值
    ASP.NET中常用的文件上传下载方法
    把图片转换为字符
    把图片转换为字符
    JavaScript 时间延迟
    Using WSDLs in UCM 11g like you did in 10g
    The Definitive Guide to Stellent Content Server Development
    解决RedHat AS5 RPM安装包依赖问题
    在64位Windows 7上安装Oracle UCM 10gR3
  • 原文地址:https://www.cnblogs.com/alipayhutu/p/2508408.html
Copyright © 2011-2022 走看看