分享

文件名加前缀(001_)文件按文件名排列

 闪宁斯达 2012-01-05

package com.file;

import java.io.File;
import java.io.FileFilter;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

 

/**
 *  FileRename.java
 *  @Author      hasau  
 *  @Email       hasau@163.com
 *  @CreateTime  2012-1-4  下午7:57:17 
 **/
public class FileRename {
 
 
  public static void main(String[] args) {
   String name = "E:/picture";
   doSome(name,5);
  }
 
 
  /**
  * @param name   目标文件的目录名
  * @param num    文件名前缀:几位  001_abc.jpg 3为
  */
 private static void doSome(String name,int num){   
   File file = new File(name);   
   File[] files = file.listFiles(ff);   
   File[] dirs = file.listFiles(dir);
   for(File f : dirs){
    doSome(f.getAbsolutePath(),num);
   }   
   
   List<File> list = Arrays.asList(files);
   sortAsName(list); 
   
   handleFiles(list,num);
  }


 /**
  * @param files  文件集合
  * @param loap   文件名前缀:几位
  */
 private static void handleFiles(List<File> files,int loap) {
  String prefix=null;
  String fname = null;
  String path = null;
  int count = 0; 
  for(File f : files){   
   prefix = null;
   fname = null;
   path = null;
   
   count++;
   prefix=count+"";
   int l = prefix.length();
   if(l<loap){
    for(int j=0;j<loap-l;j++){
     prefix = "0"+ prefix;
    }
   }
   fname = f.getName();
   path = f.getAbsolutePath();
 
   int i = path.lastIndexOf(fname);
   path = path.substring(0, i)+prefix+"_"+fname;
   
   boolean flag = f.renameTo(new File (path));
   if(flag){    
    System.out.println(f.getAbsolutePath());
    System.out.print("____"+f.length());
   }
  }
 }
 
    
 private static FileFilter ff = new FileFilter() { 
  public boolean accept(File f) {
   if(f.isFile()){
    return true;
   }
   return false;
  }
 };
 
 private static FileFilter dir = new FileFilter() {  
  public boolean accept(File f) {
   if(f.isDirectory()){
    return true;
   }
   return false;
  }
 };
 
 /**
  *  文件名排序   上未测试
  * */
 private static void sortAsName(List<File> files) {
  if(files.isEmpty())  return;
  Collections.sort(files, new Comparator<File>() {
   public int compare(File o1, File o2) {
    if (o1.isDirectory() && o2.isFile())
     return -1;
    if (o1.isFile() && o2.isDirectory())
     return 1;
    return o1.getName().compareTo(o2.getName());
   }
  });
 }
 
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多